天天看點

P1960 郁悶的記者

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int mod = 0x3f3f3f3f;
int g[5100][5100];
int in_degree[5100];
int vis[5100];
queue<int>q;

int main()
{
  int n;
  cin>>n;
  int m;
  cin>>m;
  for(int i = 1; i <= m; i++)
  {
    int x,y;
    cin>>x>>y;
    g[x][y] = 1;
    in_degree[y]++;
  }
  int flag = 0;
  for(int i = 1; i <= n; i++)
  {
    if(!in_degree[i])
    {
      q.push(i);
      vis[i] = 1;
      flag++;
    }
  }
  while(q.size())
  {
    
    int now = q.front();
    q.pop();
    cout<<now<<endl;
    for(int i = 1; i <= n; i++)
    {
      if(g[now][i] && !vis[i])
      {
        g[now][i] = 0;
        in_degree[i]--;
        if(!in_degree[i])
        {
          q.push(i);
          vis[i] = 1;
          
        }
        
      }
    }
    if(q.size() > 1)
    {
      flag++;
    }
  }
  if(flag > 1)
  {
    cout<<"1"<<endl;
  }
  else
  {
    cout<<"0"<<endl;
  }
}      

繼續閱讀