4 3 1 2 2 3 4 3
1 2 4 3
#include<stdio.h>
#include<string.h>
const int N =505;
int mapt[N][N],n,in[N];
void tope()
{
int k=n;
while(k--)
{
int i;
for( i= 1;i<=n;i++)
if(in[i]==0)
break;
printf("%d",i);
if(k)
printf(" ");
for(int j=1;j<=n;j++)
in[j]-=mapt[i][j];
in[i]=-1;
}
printf("\n");
}
int main()
{
int m;
while(scanf("%d%d",&n,&m)>0)
{
memset(mapt,0,sizeof(mapt));
memset(in,0,sizeof(in));
while(m--)
{
int a,b;
scanf("%d%d",&a,&b);
mapt[a][b]++; in[b]++;
}
tope();
}
}
原文地址:http://blog.csdn.net/u010372095/article/details/45174637