本文共 523 字,大约阅读时间需要 1 分钟。
对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。一个有向图无法拓扑排序时只有一种情况:该有向图中存在环。这与拓扑排序矛盾:一个节点想要输出,必须先输出它的前驱节点,所以~矛盾!
下面给出拓扑排序的代码,以及判断一个图是否为DAG的代码:
#include#include #include #include using namespace std;const int maxn = 100 + 10;int n, m;vector G[maxn];//G[i]表示i节点所指向的所有其他点 int in[maxn];//节点入度 bool topo()//判断该图是否可拓扑排序 { queue Q; int sum = 0;//记录可拆解的点数目 for (int i = 0; i
转载地址:http://suyci.baihongyu.com/