运用dfs,对一个有向无回图(dag)进行拓扑排序。
一个图的拓扑排序可看成所有顶点沿水平线排列而成的一个序列,使得所有有向边均从左指向右。
TOPOLOGICAL-SORT(G)
call DFS(G) to compute finishing times f[v] for each vertex v
as each vertex is finished, insert it onto the front of a linked list // stack也可
return the linked list of verteces
经拓扑排序的顶点,按照完成时间的递减排序。在dfs中越早完成,在拓扑排序越后面。
uva10305
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
#include <stack>
using namespace std;
const int maxn =105;
stack<int> stk;