随笔分类 - 图论——生成树
摘要:题目链接:https://www.luogu.com.cn/problem/P1991 解法:选择S个点,使得另外的P-S个点到这S个点构成的联通分量U的最大距离最小。我们可以考虑最小生成树的最大边,可以证明最小生成树的最大边一定在U中,否则最大值就是该边长度,之后我们可以迭代地将最小生成树的次大边
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P1265 最小生成树的prim算法跟dijkstra算法非常像,就是将点分成两个集合,一个是已经在生成树中的点的集合,一个是还未加入生成树的点的集合。最初选择一个点进入集合{V1},然后从{V}-{V1}点集中选择到{V1
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1301 将结点的字符信息处理成点信息即可,代码如下: 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef unsigned int ui;
阅读全文
摘要:题目链接:https://www.luogu.com.cn/problem/P2212 几乎是Kruskal裸题,但是建n*(n-1)条边给我T了俩点,后来我发现只要C(n,2)条边就可以,因为假设(vi,vj)和(vj,vi)之间有边,但是其中一条没用到则另外一条也用不到,因为他们一样长,如果其中
阅读全文
摘要:Prime算法的思路:从任何一个顶点开始,将这个顶点作为最小生成树的子树,通过逐步为该子树添加边直到所有的顶点都在树中为止。其中添加边的策略是每次选择外界到该子树的最短的边添加到树中(前提是无回路)。 Prime算法的正确性证明: 引理1:对于连通图中的顶点vi,与它相连的所有边中的最短边一定是属于
阅读全文