最近都是图,为了防止几次记不住,先把自己理解的写下来,有问题继续改。先把算法过程记下来:prime算法: 原始的加权连通图——————D被选作起点,选与之相连的权值最小的边————选与D、A相连权值最小的边——————可选的有B(7)、E(8)、G(11) ———————————————————.....
分类:
其他好文 时间:
2015-11-18 21:26:03
阅读次数:
185
Prim算法是求图(无向图)中最小生成树的一种算法,另外一种是Kruskal算法。
Prim算法思想:Prim算法的每一步都会为一棵生长中的树添加一条边。一开始这棵树只有一个顶点,然后会向它添加V-1条边,每次总是将下一条连接树中的顶点与不在树中的顶点且权重最小的边加入树中。
源代码示例:
#include
#include
#include
#incl...
分类:
编程语言 时间:
2015-11-16 15:54:17
阅读次数:
246
#include#include#include#define MAX (int)1e5using namespace std;struct line{ int u; int v; int w;};int n,m;int pre[MAX+7];struct line l[MAX+7];void in...
分类:
其他好文 时间:
2015-11-10 21:10:08
阅读次数:
284
马上就快要考试了,然而突然发现自己图论已经废了,于是再都打一遍练练手。。。。。。 1 const 2 maxn=100; 3 maxe=maxn*maxn; 4 5 type 6 edge=record ...
分类:
编程语言 时间:
2015-11-02 17:00:49
阅读次数:
226
题目大意:定义无向图生成树的最大边与最小边的差为苗条度,找出苗条度最小的生成树的苗条度。题目分析:先将所有边按权值从小到大排序,在连续区间[L,R]中的边如果能构成一棵生成树,那么这棵树一定有最小的苗条度。枚举所有这样的区间。代码如下:# include# include# include# inc...
分类:
其他好文 时间:
2015-11-01 12:40:18
阅读次数:
238
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1301最小生成树 (Kruskal) 1 #pragma warning(disable:4996) 2 #include 3 #include 4 #include 5 #include 6 #...
分类:
其他好文 时间:
2015-10-26 22:02:38
阅读次数:
211
解题思路:Kruskal模板题,重复输入的情况,本题是无向图。见代码: 1 #include 2 #include 3 #include 4 using namespace std; 5 #define inf 0x3f3f3f3f 6 const int maxn = 100005; 7 int ...
分类:
Web程序 时间:
2015-10-26 13:28:09
阅读次数:
184
解题思路:看懂题意是关键,Kruskal算法,最小生成树模板。上代码: 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn = 80; //边的最大值 6 int A[30], n, k, vis[maxn...
分类:
其他好文 时间:
2015-10-26 12:00:52
阅读次数:
214
解题思路:典型的Kruskal,不能用floyed(会超时),上代码: 1 #include 2 #include 3 #include 4 using namespace std; 5 #define inf 0x3f3f3f3f 6 const int maxn = 1005; 7 int fa...
分类:
其他好文 时间:
2015-10-23 18:25:42
阅读次数:
135
这道题显然是一道最小生成树的问题,参考算法导论中的Kruskal方法,先对路径长度进行排序,然后使用并查集(Disjoint Set Union)来判断节点是否连通,记录连接所有节点的最后一条路径的长度即为最大的长度了。下面的并查集算法还可以通过设置rank数组记录节点的等级来进一步优化。总的来说还...
分类:
其他好文 时间:
2015-10-21 12:15:36
阅读次数:
176