自己写了个拓扑排序的模板,以便备忘之用:
//int n,m;
void sb()
{
for(int num=1;num<=n;num++)
{
j=1;
if(b[j]!=0)
{
while(1)
{
j++;
if(b[j]==0)
break;
else if(j>n)
break;
}
}
if(j>n)
break; //不满足拓扑序列
ans[num]=j;
b[j]--;
for(i=1;i<=m;i++)
{
if(a[j][i]>0)
{
a[j][i]=-1;
b[i]--;
}
}
}
}