摘要: 步骤: 1.输入边时将入度加1; 2.在bfs函数中将所有入度为0的点入队; 3.如果下个点可达,则的入度--,如果入度为0, 将其入度。 /*题目要求:本题要求是求出有向图中的任意一个拓扑序列,有则输出这个序列,没有则输出-1; *思路:一个点的入度为0,代表没有点指向它,所以它可以入队,接着搜索 阅读全文
posted @ 2021-10-01 09:57 维Cboy 阅读(506) 评论(0) 推荐(0)
摘要: 思路:dfs(深度搜索),每次搜索没有标记过的数字,直到全部搜索完毕,输出路径,回溯,取消标记。 #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 100010 阅读全文
posted @ 2021-10-01 08:50 维Cboy 阅读(118) 评论(0) 推荐(0)
摘要: 可以将连通块看成集合,合并连通块可以看成将集合合并,但是要注意存储连通块中的点数 #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 100010; int n, 阅读全文
posted @ 2021-09-30 22:59 维Cboy 阅读(48) 评论(0) 推荐(0)
摘要: 并查集: 1.将两个集合合并 2.询问两个元素是否在同一个集合 基本原理:每个集合用一棵树来表示,树根的编号为整个集合的编号。每个节点储存它的父节点,p[x]表示x的父节点。 问题1:如何判断树根:if(p[x] == x) 问题2:如何求集合编号:while(p[x] != x) x = p[x] 阅读全文
posted @ 2021-09-30 22:30 维Cboy 阅读(243) 评论(0) 推荐(0)