![](https://img-blog.csdnimg.cn/9707e753ef8c45778be0d1427125c867.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
寒假集训专题四 图论
图论
斐林试剂捏
这个作者很懒,什么都没留下…
展开
-
【图论】测试题A - Networking
题意 一个无向图,n个顶点,m条边,要求求出最小生成树的所有边之和 思路 整道题还是比较裸的(写完之后看了一下似乎是kruskal算法) 储存好图之后按照边的权值大小排序,遍历每一个边,保证每次选择的是最短的边 代码 #include<map> #include<cmath> #include<stack> #include<queue> #include<cstdio> #include<vector> #include原创 2022-02-18 16:31:38 · 143 阅读 · 0 评论 -
【图论】训练题C - How Many Paths?
题意 一个有向图,要求返回从1到n的路径情况。 0:0条路 1:一条路 -1:无限条 2:多与1的有限条 思路 会出现无限的原因是因为有环的存在,可以通过tarjan算法找到连通块 tarjan找到连通块后,相应的ans[i]已经被更新成-1。 深搜所有点,如果该点ans=-1,那么其他经过他的点也是-1。 只有一条通路的,可以再次通过深搜来确定 最后一次深搜,如果有多条边到该点,则该点往后的点的ans则被更新成2 代码 #include<map> #include<原创 2022-02-18 16:19:33 · 126 阅读 · 0 评论 -
【图论】训练题B - The Number of Imposters
题意 n个玩家,m条指令(i说j是imposter/crewmate)要求求出imposter可能最多为多少人 思路 如果A说B为imposter说明2者属于不同团队,如果A说B为crewmate则二者属于一个团队(imposter和crewmate都肯那个),我们只需要判断出可能是一个团队的最多人数。 利用并查集,我们把属于同一团队的权值设置为0,不属于的设置为1 代码 #include<map> #include<cmath> #include<stack&g原创 2022-02-15 17:11:15 · 382 阅读 · 0 评论 -
【图论】训练题D - Dijkstra?
题意 给一个图,要求求出从初始位置到重点的最短路径 思路 迪杰斯特拉算法的模板题,还是花了挺久时间熟悉代码的,使用了优先队列进行优化 代码 #include<map> #include<cmath> #include<stack> #include<queue> #include<cstdio> #include<vector> #include<string> #include<cstring> #原创 2022-02-15 16:17:12 · 339 阅读 · 0 评论 -
【图论】测试题A - pSort
题意 给定一个从1到n的数组,给一个目标数组和d[i],第i个数只能和距离d[i]的元素交换,要求判断是否能变换成目标数组 思路 直接用并查集的思路去解决 代码 #include<map> #include<cmath> #include<stack> #include<queue> #include<cstdio> #include<vector> #include<string> #include<cs原创 2022-02-14 19:10:28 · 152 阅读 · 0 评论