拓扑排序
我写了一个拓扑排序,但是好像有点问题,请各位高手帮我看看:#include <stdio.h>
#include <stdlib.h>
int ans[100];
void topology(int map[100][100],int m,int n)
{
int mark[100]={0};
int i,j,k;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
if(map[i][j]>0)
mark[j]++;
}
for(i=0;i<n;i++)
{
j=0;
while(mark[i]!=0) j++;
ans[i]=j;
mark[j]=-1;
for(k=0;k<n;k++)
if(map[k][j]>0)
mark[k]--;
}
}
int main()
{
int map[100][100];
int m,n,i;
int start,end;
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
{
scanf("%d %d",&start,&end);
map[start][end]=1;
}
topology(map,m,n);
for(i=n-1;i>=0;i--)
printf("%d ",ans[i]);
system("pause");
return 0;
}