算法要点:Kruskal算法的最难点在于怎样判断加入边(x,y)后是否形成了环。 问题可化为:判断边(x,y)的两个顶点x,y在图(实际是森林)mst中最否已经连通。如果已经连通,加入边将形成环;否则,不形成环。 在kruskal算法中,要用到并查集的合并和查找 并查集: kruskal算法核心: ...
分类:
编程语言 时间:
2016-10-06 22:05:38
阅读次数:
420
NOIP 2013 火车运输【树链剖分】 树链剖分 题目描述 Description A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。 树链剖分 ...
分类:
其他好文 时间:
2016-10-02 21:24:48
阅读次数:
347
国庆万岁!!!!! 【题目大意】 给定一张无向图,有两种边的类型为0和1。求一个最小生成树使得边0有k条。 【思路】 跑两次Kruskal。 第一次的时候优先选择边1,然后判断有哪些边0还不能连通,那么这些边0是必须要选取的。如果必须要选的边0大于k,那么直接输出无解。 第二次的时候先合并那么必须要 ...
对没错我就是在水博 P3366 【模板】最小生成树 kruskal: P3367 【模板】并查集 1 /*by SilverN*/ 2 #include<algorithm> 3 #include<iostream> 4 #include<cstring> 5 #include<cstdio> 6 ...
分类:
其他好文 时间:
2016-09-23 18:12:40
阅读次数:
235
晚上做携程的笔试题,附加题考到了权重最小生成树。OMG,就在开考之前,我还又看过一遍这内容,可因为时间太紧,也从来没有写过代码,就GG了。又吃了眼高手低的亏。这不,就好好总结一下,亡羊补牢。 权重最小生成树问题是指在一棵无向全连接图中找到一个无环子集T,既能将所有的结点连接起来,又具有最小的权重和。 ...
分类:
编程语言 时间:
2016-09-17 23:32:29
阅读次数:
194
/**并查集实现克鲁斯卡尔算法61 2 62 4 11 4 21 3 13 5 44 5 3**/#include<iostream>#include<vector>#include<algorithm>#define MAX_N 100using namespace std; struct Nod ...
分类:
编程语言 时间:
2016-09-10 23:55:11
阅读次数:
162
2429: [HAOI2006]聪明的猴子 Description 在一个热带雨林中生存着一群猴子,它们以树上的果子为生。昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上。猴子不会游泳,但跳跃能力比较强,它们仍然可以在露出水面的不同树冠上来回穿梭,以找到喜欢 ...
分类:
其他好文 时间:
2016-09-09 22:01:25
阅读次数:
176
因为图算法的各种英文名傻傻分不清楚,所以总结一下。 求最小生成树: Kruskal 假设给定一个加权连通图G,G的边集合为E,顶点个数为n,要求其一棵最小生成树T。 假设T中的边和顶点均涂成红色,其余边为白色。开始时G中的边均为白色。 1)将所有顶点涂成红色; 2)在白色边中,挑选一条权最小的边,使 ...
分类:
编程语言 时间:
2016-09-07 22:46:55
阅读次数:
161