变量
- int n:有向无环图的节点数目。
- int deg[i]:节点 i 的入度,应在建边时求出。
- int cnt:有向无环图的排序后的节点数目,若不等于 n 则该图不是有向无环图。
- int ans[i]:排序后的第 i 个点的编号。
函数
- void topsort():进行拓扑排序。
代码
int n,deg[N],cnt,ans[N];
void topsort(){
queue<int>q;
for(int i=1;i<=n;i++)
if(!deg[i])
q.push(i);
while(q.size()){
int x=q.front();
q.pop();
ans[++cnt]=x;
for(int i=head[x];i;i=nxt[i]){
int y=ver[i];
if(--deg[y]==0)
q.push(y);
}
}
}