一、问题
0 -> 1 -> 2
↓ ↓ ↓
3 -> 4 -> 5
输出该图的一条拓扑排序,比如
0 -> 1 -> 3 -> 2 -> 4 -> 5
二、代码
Java
public class DirectedLinkedGraph {
private int vertexNum; // 顶点个数
private LinkedList<Integer> adj[]; // 邻接表
public DirectedLinkedGraph(int vertexNum) {
this.vertexNum = vertexNum;
adj = new LinkedList[vertexNum];
for (int i = 0; i < vertexNum; ++i) {
adj[i] = new LinkedList<>();
}
}
public void addEdge(int from, int to) { // 有向图一条边存两次
adj[from].add(to);
}
/**
* 创建
* <p>
* 0 -> 1 -> 2
* ↓ ↓ ↓
* 3 -> 4 -> 5
*/
public void build() {
addEdge(0, 1);
addEdg