寒假集训专题四 图论
图论
斐林试剂捏
这个作者很懒,什么都没留下…
展开
-
【图论】测试题A - Networking
题意一个无向图,n个顶点,m条边,要求求出最小生成树的所有边之和思路整道题还是比较裸的(写完之后看了一下似乎是kruskal算法)储存好图之后按照边的权值大小排序,遍历每一个边,保证每次选择的是最短的边代码#include<map>#include<cmath>#include<stack>#include<queue>#include<cstdio>#include<vector>#include原创 2022-02-18 16:31:38 · 137 阅读 · 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 · 337 阅读 · 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 · 151 阅读 · 0 评论