今天写一下关于拓扑排序与dfs的一点学习经验。
首先说说拓扑排序吧
拓扑排序可以用dfs,经典的队列算法(也能用堆栈实现)
首先说一下什么是拓扑排序,有时候一些任务会产生依赖关系。即做A需要先做B,则A依赖与B
然后通过拓扑排序,产生一个序列,满足这些先后依赖关系。
关于拓扑排序的几个算法:
一 dfs
void dfs(int x){
assert(visit[x]==false);
visit[x]=true;
for(vector<int>::iterator it=G[x].begin() ; it != G[x].end() ; it++ ){
if( !visit[*it] ){
dfs(*it);
}
}
ans[an++]=x;
}
v