一、Prim Prim算法的思想是: 1. 整个顶点集为$V$,初始选一个起点$s$,令集合$u=\{s\}, v=\{\}$; 2. 在集合$u$与集合$V u$中的点组成的边中,选一条权值最小的边$u_0v_0$加入MST,并且将$u_0$加入$u$; 3. 重复直到MST有$n 1$条边或$n ...
分类:
其他好文 时间:
2020-01-26 16:06:05
阅读次数:
101
直接干 1 #include<iostream> 2 #include<algorithm> 3 #include<climits> 4 using namespace std; 5 struct edge 6 { 7 int from,to,weight; 8 }a[100010];//存边 9 ...
分类:
其他好文 时间:
2020-01-26 12:58:41
阅读次数:
56
「CF1023F」Mobile Phone Network "传送门" 直接钦定那 $k$ 条边在最小生成树中,然后把最小生成树树剖一下。 每条其它边的效果就是把该边端点路径上的边的权对该边边权取 $\min$。 不会区间取 $\min$ 的看 "这里" 。 参考代码: ...
分类:
Web程序 时间:
2020-01-24 00:05:12
阅读次数:
112
最小生成树 最小生成树就是在一个图中寻找一个联通图,必须包含原图的所有节点,且这个图的所有边的权值和最小. 为什么是一个树呢?因为只要求联通,就一定没有环,没有环不就是树了嘛! Kruskal算法 Kruskal算法的核心是加边和判环.一条一条把边加上,如果加上会形成环就不加,最后弄成一个连通图. ...
分类:
其他好文 时间:
2020-01-20 12:49:39
阅读次数:
68
数据不是很大,我们可以通过莫队算法来很轻易的解决这个问题。注意不要搞混n,m变量。 按照一定顺序来进行操作询问,使得重复操作尽可能的少。我们考虑从一个已经得出的[l,r]的答案,转移到[a,b]的答案就是两个点的曼哈顿距离。可以使用最小曼哈顿距离生成树来解决。但是代码量过大。我们有更简单的解决策略。 ...
分类:
其他好文 时间:
2020-01-20 09:17:12
阅读次数:
71
生成树: 已知连通图G,图上有n个顶点。 生成树是指图G的一个极小(边最少)连通子图,生成树上有n个顶点,n-1条边,且任意两点之间都是联通的。 最小生成树: 已知带权连通图G,图中有n个顶点,每条边都有权值。 要从图中抽出一棵生成树,使得树上所有边权之和最小,这棵树就叫做最小生成树(Mininum ...
分类:
其他好文 时间:
2020-01-19 00:28:29
阅读次数:
87
"Link" Solution 最小生成树有两个性质: 在任意最小生成树上,任意权值的边数目是相同的; 任意最小生成树,在加完了小于某权值的边之后,图的联通性是一样的。 所以先跑一遍Kruskal,对每条边处理出加入权值比他小的边之后两端点所在的联通块。 对于每组询问用,把边按边权排序之后,并查集c ...
分类:
其他好文 时间:
2020-01-18 10:20:05
阅读次数:
57
【题意】 给定一个n个点m条边的无向图,求图中所有生成树边权最大公约数的最小公倍数。 【数据规模】对于20%的数据,M=N-1;对于另外20%的数据,M=N;对于另外30%的数据,所有边权都是2的整数次幂;对于100%的数据,N≤1000,M≤100000,di≤215-1,ans≤264-1。 【 ...
分类:
其他好文 时间:
2020-01-18 01:07:55
阅读次数:
143
最小生成树模板 prim 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn = 1e3+20; 5 const int inf=0x3f3f3f3f; 6 int G[ ...
分类:
其他好文 时间:
2020-01-17 11:52:50
阅读次数:
103
CodeForces - 606D Lazy Student 传送门 题目大意:m条边,每条边给权值和是否在最小生成树里,问能否构造出一个图满足边 思路:排序,对可行的边与1相连,对于不可行的边其它已连结点相连,直到连完或者不满足条件 卡点:对于权值相同的边,在最小生成树里的边的优先级较高 代🐎 ...
分类:
其他好文 时间:
2020-01-16 00:52:13
阅读次数:
83