思路
1.创建一个队列q,将入度为0的顶点全部加入队列。
2.当队列不为空时,取出首结点,[访问输出],遍历其所有后继顶点,另后继结点的入度减一,判断若入度减一后为0,则将这后继顶点加入队列。再清除首结点从它出发的边,即后继结点.
3. 步骤2结束意味着队列为空。判断加入拓扑序列的顶点数和图的顶点数n是否相等,若相等则证明拓扑排序成功,和该图是有向无环图。
有向无环图:如果有向图的任意顶点都无法通过一些边回到自身,则这个图称为有向无环图
代码加注释
vector<int> G[MAXV];//邻接表,存储每个顶点所指向的后继顶点下标
int n,inDegree[MAXV];//顶点数,每个顶点的入度,下面的结点和顶点的含义相同
bool topologicalSort(){
int num