拓扑排序
介绍一种求拓扑序的方法。
枚举每个点,沿反图DFS,之后把自己加入拓扑序。
void DFS(int x) { if(vis[x]) { return; }
vis[x] = 1; for(int i = _e[x]; i; i = _edge[i].nex) { int y = _edge[i].v; DFS(y); } topo[++num] = x; return; } for(int i = 1; i <= n; i++) { DFS(i); }
介绍一种求拓扑序的方法。
枚举每个点,沿反图DFS,之后把自己加入拓扑序。
void DFS(int x) { if(vis[x]) { return; }
vis[x] = 1; for(int i = _e[x]; i; i = _edge[i].nex) { int y = _edge[i].v; DFS(y); } topo[++num] = x; return; } for(int i = 1; i <= n; i++) { DFS(i); }