同样为裸的拓扑排序
模板题。
中间忘记brea wa了一次 囧~~~~
代码:
#include<stdio.h>
#include<string.h>
int to[505],vis[505],mp[505][505];
int flag,sum,n,m;
void topo(int x)
{
if(flag)
printf(" ");
flag=1;
sum++;
vis[x]=1;
printf("%d",x);
for(int i=1; i<=n; i++)
if(!vis[i]&&mp[x][i])
to[i]--;
}
int main()
{
//freopen("a.txt","r",stdin);
while(~scanf("%d%d",&n,&m))
{
memset(vis,0,sizeof(vis));
memset(mp,0,sizeof(mp));
memset(to,0,sizeof(to));
while(m--)
{
int a,b;
scanf("%d%d",&a,&b);
if(mp[a][b]==0)
{
mp[a][b]=1;
to[b]++;
}
}
sum=flag=0;
while(sum<n)
{
for(int i=1; i<=n; i++)
if(!vis[i]&&!to[i])
{
topo(i);
break;
}
}
printf("\n");
}
return 0;
}