九度教程第80题

2014-11-24 08:08:53 · 作者: · 浏览: 0
C语言 源码
[cpp]
#include
#define maxsize 110
int E[maxsize][maxsize];
int Indegree[maxsize];
int Stack[maxsize];
int main()
{
int n,m,i,j,a,b,num,top;
scanf("%d %d",&n,&m);
while(n)
{
for(i=0;i
for(j=0;j
E[i][j]=0;
while(m>0)
{
scanf("%d %d",&a,&b);
E[a][b]=1;
m--;
}
for(i=0;i
Indegree[i]=0;
for(i=0;i
{
for(j=0;j
{
if(E[i][j]==1)
Indegree[j]++;
}
}
top=0;
for(i=0;i
if(Indegree[i]==0)
Stack[top++]=i;
num=0;
while(top>0)
{
i=Stack[--top];
num++;
for(j=0;j
{
if(E[i][j]==1)
{
Indegree[j]--;
if(Indegree[j]==0)
Stack[top++]=j;
}
}
}
if(num==n)
printf("YES\n");
else
printf("NO\n");
scanf("%d %d",&n,&m);
}
}