题目地址:点击打开链接
思路:模板
AC代码:
#include<stdio.h>
#include<string.h>
int a[510][510],visit[510],b[510];
int main()
{
int n,m,i,j,k;
int x,y;
while(scanf("%d%d",&n,&m) != EOF)
{
memset(a,0,sizeof(a));
memset(visit,0,sizeof(visit));
/*for(i=0; i<m; i++)
{
scanf("%d%d",&x,&y);
a[x][y] = 1;
visit[y]++;
}*/
for(i=0; i<m; i++)//得多加一句,否则会有重复的情况
{
scanf("%d%d",&x,&y);
if(a[x][y] == 0)
{
a[x][y] = 1;
visit[y]++;
}
}
i = 0;
while(i < n)
{
for(j=1; j<=n; j++)
{
if(visit[j] == 0)
{
visit[j]--;
b[i++] = j;
for(k=1; k<=n; k++)
{
//if(a[j][k] == 1)
if(a[j][k] > 0)//直接if(a[j][k])也行,不会对结果有影响
{
visit[k]--;
}
}
break;
}
}
}
for(i=0; i<n-1; i++)
{
printf("%d ",b[i]);
}
printf("%d\n",b[n-1]);
}
return 0;
}