AcWing 848. 有向图的拓扑序列 用BFS来写拓扑,以前还真没想过这个思路 之前用的都是深搜找拓扑序 依然是正常用数组实现一个邻接表,然后用数组模拟队列,从入度为0,即d[i] == 0的点开始搜索 用数组模拟队列的原因是为了最后方便直接输出拓扑序,就不用另开一个数组专门存储了 代码中的几个 ...
一、技术总结 首先这一题是关于拓扑排序的,必须明确啥是拓扑排序,也就是对于有向无环图,能够生成拓扑序列;使得该序列中任意两个顶点u、v,如果存在u->v,那么在序列中u一定在v的前面。 然后这一题是给出一个有向无环图,要我们判断所给的序列是否为拓扑排序。 无论是判断是拓扑序列还是该图是否为有向无环图 ...
分类:
编程语言 时间:
2020-06-20 21:18:10
阅读次数:
56
拓扑排序 拓扑序列: 设G=(V,E)是一个具有n个顶点的有向图,V中顶点序列V1,V2,......,Vn满足若从顶点Vi到Vj有一条路径,则在顶点序列中顶点Vi必须在顶点Vj之前。则称这样的顶点序列为一个拓扑序列 拓扑排序 对一个无环有向图(AOV网)构造拓扑序列的过程 方法 从AOV网中选择一 ...
分类:
编程语言 时间:
2020-05-11 01:09:59
阅读次数:
72
腰酸背痛一个上午,终于搞定了。。 一 用到二个工具: 1.回溯法的算法思想 2.顺序表(主要用到了删除操作) 二 程序设计步骤: 1.读入图; 这里我没有用严格的图结构。而是用邻接矩阵来表示图,邻接矩阵放在一个txt文件中。(见后文) 读入图就是指读入这个文件。 2.计算图中顶点的入度; 用一个结构 ...
分类:
其他好文 时间:
2020-03-20 17:07:57
阅读次数:
73
# 题意给定n点m边的有向图,可能存在重边,输出任意一个这个图的拓扑序列,如果不存在输出-1 # 题解有向无环图是拓扑排序的关键bfs,选择入度为0的点,不断的将入度为0的点加入答案序列,并将它所有出边的终点的度-1 如果存在拓扑序列,那么最后的答案数组长度就是节点个数,如果不存在,即过程进行到某一 ...
分类:
编程语言 时间:
2020-03-07 10:13:03
阅读次数:
75
# 题意给定n个点m条边的有向无环图,统计从每个点出发所能到达的点的数量 # 题解统计的是从x出发的后继能够到达的点的并集和其自身。用一个二进制数表示当前节点可以到的节点,第 i 位为1就是可以到达f(i)就表示 i 可达的点,计算出来一个拓扑序列,按照拓扑序列的倒序算过来即可,开始的时候所有点只能 ...
分类:
其他好文 时间:
2020-03-07 10:07:59
阅读次数:
51
任务:给定一个有向图,实现图的深度优先, 广度优先遍历算法,拓扑有序序列,并输出相关结果。 功能要求:输入图的基本信息,并建立图存储结构(有相应提示),输出遍历序列,然后进行拓扑排序,并测试该图是否为有向无环图,并输出拓扑序列。 按照惯例,先上代码,注释超详细: #include<stdio.h> ...
分类:
编程语言 时间:
2020-01-30 23:05:46
阅读次数:
146
一、什么是拓扑排序在图论中,拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)的所有顶点的线性序列。且该序列必须满足下面两个条件: 每个顶点出现且只出现一次。若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现 ...
分类:
其他好文 时间:
2020-01-26 14:26:55
阅读次数:
86
1 //拓扑排序判断是否有环 2 #include<cstdio> 3 #include<algorithm> 4 #include<string.h> 5 #include<math.h> 6 #include<queue> 7 using namespace std; 8 typedef lon ...
分类:
编程语言 时间:
2019-11-11 00:13:42
阅读次数:
111
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 int map[100][100],visited[100],du[100],flag,n,m,i,j,k; 5 int main() 6 { 7 while(~sc ...
分类:
其他好文 时间:
2019-11-02 20:26:11
阅读次数:
96