拓扑序列模板
#define maxn 510
int n,m;
int team[maxn][maxn];
int in[maxn];
int topo[maxn];
void toposort()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(in[j]==0)
{
in[j]--;
topo[i]=j;
for(int k=1;k<=n;k++)
{
if(team[j][k]) in[k]--;
}
break;
}
}
}
}
int main()
{
int p1,p2;
memset(team,0,sizeof(team));
memset(in,0,sizeof(in));
for(int i=0;i<m;i++)
{
cin>>p1>>p2;
if(team[p1][p2]==0)
{
team[p1][p2]=1;
in[p2]++;
}
}
toposort();
for(int i=1;i<n;i++)
{
cout<<topo[i]<<" ";
}
cout<<topo[n]<<endl;
return 0;
}