Matrix-Tree 定理作用:给定 n 个点 m 条边的无向图,求图的生成树个数。 定义矩阵K[i][j]=D[i][j]-A[i][j],(其中D为度数矩阵(即当i==j时,D[i][j]=节点 i 的度数,其余为0),A为邻接矩阵,有边相邻即为1,其余为0) 结论:对于已经得出的基尔霍夫矩阵 ...
分类:
其他好文 时间:
2020-05-08 13:10:58
阅读次数:
132
就是对于一个图,求有多少个生成树。 基尔霍夫矩阵树定理:构建一个邻接矩阵,对角线上的点值等于点 i 的度数,如果 i 和 j 有边相连 对应矩阵点值为 -1 生成树个数:任意的n-1阶行列式的值。 UVA - 10766 题目大意:现有n个点,m条边,k为根节点,每条边代表边的两点有矛盾,不能相连, ...
分类:
其他好文 时间:
2020-05-07 23:08:29
阅读次数:
80
先求一遍最小生成树,再枚举每一个非树边,如果能替换最大值就替换,如果相等则替换次大值 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=510,M=10010; int h[N], e[N * ...
图的最短路径&最小生成树的以点为中心思想的算法总结 在图的常见问题中,求最短路径和图的最小生成树问题最为常见。而关于这两种问题,有一种算法思想可以用几乎相同的代码解决两种不同的问题。 这种算法思想的基础基于点,分别对应了最短路径问题中的Dijkstra算法和最小生成树问题中的prim算法。 这种算法 ...
分类:
编程语言 时间:
2020-05-05 00:44:07
阅读次数:
64
题目大意: 给你一堆三维的点,每个点之间的距离是xy轴的欧式距离,代价是高度,问一颗最优比例生成树。这题是我很早之前做过的了,当初还非常非常菜,给大家看一下我的情况。 当初可真是年少无知啊,这个prim因为是稠密图,所以n方才能求生成树,很神奇啊,稠密图的最小生成树算法居然是o(e)的,不过还是很慢 ...
分类:
其他好文 时间:
2020-05-04 15:20:44
阅读次数:
77
题意: 给你一张 n 个点的完全图,其中有 m 条边长度为 1,其余全为 0。问你这张图的最小生成树为多少。 题解: 就是求补图的连通块数量减一,可以用set的count函数来建立补图,具体看代码。 #include<bits/stdc++.h> using namespace std; const ...
分类:
其他好文 时间:
2020-05-02 12:03:40
阅读次数:
55
做法 结论 如果图的所有连通块的点数都是偶数,则可以选出一个生成子图,满足点的度数均为奇数。 首先因为度数和是偶数,所以如果每个点的度数是奇数,点数一定是偶数。 然后在一个偶数连通块内任选一个有根生成树,自下而上地对于度数为偶数的点删去它与父亲的连边。注意到度数和是偶数,而除根之外的所有点度数都被调 ...
分类:
其他好文 时间:
2020-05-02 11:27:53
阅读次数:
44
算法 最小生成树 思路 我们把每个点看成一个部落,每次取最小距离的两个抱团,同时部落也减少了一个....然后减减减,直到部落数==目标数,此时下一个不同部落的距离就是最短的距离! 代码 #include<iostream> #include<cstring> #include<algorithm> ...
分类:
Web程序 时间:
2020-05-01 18:49:02
阅读次数:
70
"CSDN同步" "原题链接" 简要题意: 给定一个无向图,若干组询问问 $x \rightarrow y$ 所有路径上最小权值的最大值。 算法一 对于 $60\%$ 的数据,$1 \le n 对于 $100\%$ 的数据,$1 \le n using namespace std; const in ...
分类:
其他好文 时间:
2020-05-01 18:25:18
阅读次数:
59
假如一堵墙上有一些钉子,这些钉子由许多细线连接起来,当我们试图去掉其他线,只留下较短的线使图钉连接起来,这就形成了最小生成树。 最小生成树正式描述是:给定无方向带权图G=(V,E),最小生成树集合为T,T为最小代价连接V中所有顶点所用边E的最小集合。 最小生成树常用Prim算法和Dijkstra算法 ...
分类:
其他好文 时间:
2020-04-29 23:38:26
阅读次数:
67