#include<bits/stdc++.h>
using namespace std;
int indegree[300];
int g[300][300];
int main()
{
int n,k;
while(~scanf("%d%d",&n,&k))
{
memset(indegree,0,sizeof(indegree));
memset(g,0,sizeof(g));
for(int i=0;i<k;i++)
{
int a,b;
scanf("%d%d",&a,&b);
indegree[b]++;
g[a][b]++;
}
int sum=n;
queue<int>q;
for(int i=1;i<=n;i++)
{
if(indegree[i]==0)
{
q.push(i);
}
}
while(!q.empty())
{
int f=q.front();
q.pop();
sum--;
for(int i=1;i<=n;i++)
{
if(g[f][i])
{
indegree[i]-=g[f][i];
g[f][i]=0;
if(indegree[i]==0)
{
q.push(i);
}
}
}
}
if(sum==0)
printf("YES\n");
else printf("NO\n");
}
}
hdu 5154 拓扑排序 判有没有环
最新推荐文章于 2021-02-17 19:31:48 发布