![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最小生成树
goto_1600
我何来寂寞,哪有寂寞可言。
展开
-
牛客练习赛88 D都市的柏油路太硬
题意:给定一个图,每两个点之间的距离是他们所有路径中最大值的最小值,求这样的图的最小生成树。有q次询问,求该生成树的a,b之间的最大值。n<=1e5 m<=5e5 q<=1e7思路:是一颗克鲁斯卡尔重构树,求lca,倍增过不去,要么就树剖要么就欧拉序,这里讲一下欧拉序,欧拉序就是遍历一次把他该点存进遍历序列里,dfs遍历的伪代码大概是这样void dfs(int u,int fa){ id[++cnt]=u; in[u]=cnt; dep[u]=dep[fa]+1; for原创 2021-09-16 00:02:33 · 221 阅读 · 0 评论 -
次小生成树
**解题报告:**这还是个定理吧,就是说我们可以删掉最小生成树的一条树边,然后加上该点的树边,就能形成一个生成树,(如上图p2,绿色的边是两个点之间的最长树边,我们可以把他删掉,加上蓝色的边,这样并不影响它的连通性,所以他还是生成树)那么就一定有他的值是sum-l+w,为了让这个值最小并且比sum大,sum指的是最小生成树所有和,那么一定要找到a,b之间的最大树边(a,b指的是w边的两个顶点),...原创 2020-04-29 22:54:19 · 433 阅读 · 0 评论 -
AcWing 346. 走廊泼水节
解题报告:这题一开始没看懂,其实意思挺简单的,当然是看了题解以后 还挺容易的,主要是让你把一个树形图,变成一个完全图,(完全图就是边长数量=(n*(n-1)/2)n为点数),同时满足之前的那棵树还是唯一的最小生成树,通过图我们可以发现,在合并两个集合的时候,如果枚举的边小于等于该条边的长度w,是不行的,不满足唯一生成树,这样我们每次只需要加上(pq-1)(w+1)就是正解了,pq分别代表两个集...原创 2020-04-29 20:56:08 · 287 阅读 · 0 评论 -
1145. 北极通讯网络
网站解题报告:这道题实质上是在问满足存在k个连通块的最小d是多少。然而并不用二分,因为在kruskal算法的过程中本身联通块的数目就是递减的,从一开始的n到k然后记录最小值就能ac这道题了。#include<iostream>#include<cstring>#include<algorithm>#include<cmath>using ...原创 2020-04-29 19:41:13 · 245 阅读 · 0 评论 -
1143, 联络员
解题报告:应该把要选的都给选上,然后在从小到大选边。#include<bits/stdc++.h>const int N=31000;using namespace std;struct node{ int p; int a; int b; int c;}q[N];int p[N];int find(int x){ if(x...原创 2020-04-29 18:02:22 · 238 阅读 · 0 评论 -
最小生成树(士兵招募)
Windy has a country, and he wants to build an army to protect his country. He has picked up N girls and M boys and wants to collect them to be his soldiers. To collect a soldier without any privilege,...原创 2020-04-18 11:15:23 · 386 阅读 · 0 评论 -
蓝桥训练最小生成树kruscal
栋栋居住在一个繁华的C市中,然而,这个城市的道路大都年久失修。市长准备重新修一些路以方便市民,于是找到了栋栋,希望栋栋能帮助他。C市中有n个比较重要的地点,市长希望这些地点重点被考虑。现在可以修一些道路来连接其中的一些地点,每条道路可以连接其中的两个地点。另外由于C市有一条河从中穿过,也可以在其中的一些地点建设码头,所有建了码头的地点可以通过河道连接。栋栋拿到了允许建设的道路的信息,包括每条可...原创 2020-04-04 13:00:04 · 213 阅读 · 0 评论 -
最小生成树 acwing1146. 新的开始
发展采矿业当然首先得有矿井,小 FF 花了上次探险获得的千分之一的财富请人在岛上挖了 n口矿井,但他似乎忘记了考虑矿井供电问题。为了保证电力的供应,小 FF 想到了两种办法:在矿井 i上建立一个发电站,费用为 vi(发电站的输出功率可以供给任意多个矿井)。将这口矿井 i与另外的已经有电力供应的矿井 j 之间建立电网,费用为 pi,j。小 FF 希望你帮他想出一个保证所有矿井电力供应的最...原创 2020-04-03 14:09:38 · 252 阅读 · 0 评论 -
prim法求最小生成树
这个代码和dijkstra算法很类似。#include<iostream>#include<string.h>#include<algorithm>using namespace std;const int N=510;int g[N][N];int d[N];bool st[N];int m,n;int prim(){ mem...原创 2020-02-10 22:59:28 · 222 阅读 · 0 评论 -
kruskal求最小生成树
思路:先按照每条边的权值排序,从小到大枚举每条边,如果这条边两个顶点的祖宗节点不一样,连接上这条边并且计数器加一,最后如果计数器小于顶点个数-1的话,就说明不到n个点,就不可能,否则输出答案代码如下:#include<iostream>using namespace std;const int N=100010;int p[N];int find(int x){if(x!...原创 2020-02-10 22:43:16 · 210 阅读 · 0 评论