参考博客:入门拓扑排序
在一个有向图中,对所有的节点进行排序,要求没有一个节点指向它前面的节点。
先统计所有节点的入度(作为终点被指向的次数),对于入度为0的节点就可以分离出来,然后把这个节点指向的节点的入度减一。
一直更新,直到所有的节点都被分离出来。
如果最后不存在入度为0的节点,那就说明有环,不存在拓扑排序。
因为一道题接触到拓扑排序,就是死锁问题
模板
vector<int>ha[1000];
//存储:ha[x].push_back(y);
for(int i=0;i<n;i++) //共有n个节点
{
if(a[i]==0) //a数组记录入度
q.push(i); //加入队列
}
int ans=0,flag=0;
while(!q.empty())
{
ans++; //记录入度为0的节点的数量
int p=q.front();
q.pop();
for(int i=0;i<ha[p].size();i++) //ha是一个