ACM入门之拓扑排序
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACM入门之拓扑排序相关的知识,希望对你有一定的参考价值。
拓扑排序的应用:判断图中是否有环。
如果一个图有拓扑排序,说明该图一个没有环。
//基本思路就是先将入度为0的点入队,然后再依次扩展减入读。
//最后判断点数够n不够就可以了
int d[N],st[N],n;
vector<int>ans;
bool check()
queue<int>q;
for(int i=1;i<=n;i++) if(!d[i]) q.push(i),ans.push_back(i),st[i]=1;
while(q.size())
int u=q.front(); q.pop();
for(int i=h[u];i!=-1;i=ne[i])
int j=e[i];
if(st[j]) continue;
if(--d[j]==0) q.push(j),ans.push_back(j),st[j]=1;
if(ans.size()==n) return true;
return false;
入门习题:
848. 有向图的拓扑序列
以上是关于ACM入门之拓扑排序的主要内容,如果未能解决你的问题,请参考以下文章
ACM/ICPC 之 拓扑排序+DFS(POJ1128(ZOJ1083))
西安邮电大学第五届ACM-ICPC校赛(同步赛) B(拓扑排序)