图论一直是自己算法中最最最柔弱的部分,主要是,当年数据结构的课程,后面就去打酱油了,后来时间又都花在了电赛上,平时用的相关部又少,这一部分就更弱了,总是懒得捡起来,但是现在可是没退路了,开始好好复习这一部分。Prim算法是求解无向图最小生成树的经典算法,和Dijkstra算法类似,但是Prim算法每...
分类:
其他好文 时间:
2015-04-11 17:45:36
阅读次数:
176
[算法第一轮复习] kruskal求最小生成树算法
最小生成树算法即MST,有kruskal,prim两种算法,这里主要介绍kruskal
什么是最小生成树?
对于一个图,保证其中每个点都可以连通的最小的花费
1.算法核心
贪心+并查集
2.算法实现过程
克鲁斯卡尔算法
假设 WN=(V,{E}) 是一个含有 n 个顶点的连通网,则按照克鲁斯卡尔算法构造...
分类:
编程语言 时间:
2015-04-09 17:40:48
阅读次数:
191
题意:
给n个数,然后每次可以选择一对尚存活的数,将其异或和加和到答案中,然后删掉其中一个数,直到只剩一个数为止。
题解:
花样教人理解最小生成树,一片苦心啊,不会最小生成树的可以从这开始理解2333。
对了,数据范围有点大,完全图 kruscalkruscal 多个 log log 估计过不去。
代码:
#include
#include
#include
#include...
分类:
其他好文 时间:
2015-04-09 17:35:15
阅读次数:
173
http://acm.hdu.edu.cn/showproblem.php?pid=3371
题目大意:告诉你有几座城市,再告诉你哪两座城市之间建路要多少钱,在给你哪几个城市之间已经有路,不需要再建。要求的是要使所有城市之间连通最小要花费多少钱。
这里我用了prim算法。。保存城市之间的权值,对于已经建好的城市,将他们的权值赋为0。还有就是要判断是否能找出最小生成树,如果不可以就输出-1,如果...
分类:
其他好文 时间:
2015-04-09 17:34:25
阅读次数:
106
题目大意异或Prim。思路没开long long WA了一次你敢信?CODE#define _CRT_SECURE_NO_WARNINGS#include
#include
#include
#include
#define MAX 2010
#define INF 0x3f3f3f3f
using namespac...
分类:
其他好文 时间:
2015-04-09 17:30:46
阅读次数:
131
题目传送:蓝桥杯 - 安慰奶牛
思路:先算好边的权值,为本来的边的权值的两倍加上两个点的权值,再进行kruskal,因为边数较大,不宜采用prim
AC代码:
#include
#include
#include
#include
using namespace std;
#define LL long long
#define INF 0x7ff...
分类:
其他好文 时间:
2015-04-09 15:29:09
阅读次数:
146
题目大意:
有N个城市,每个城市有一个幸福值,如果两个城市A、B的幸福值分别为VA、VB,如果VA是
素数,或者VB是素数,又或者VA+VB是素数,则城市A和B就能连接一条路,建路的所用花费
为Min(Min(VA , VB),|VA-VB|)。
问:现在想要建几条路,使得能够连接所有的城市,所需要建设的最少路程和是多少?
思路:
就是求最小生成树,先用素数筛选法将素数打表,然后根据题意建边。最后就是用Prim模板求
最小生成树就行了。...
分类:
其他好文 时间:
2015-04-09 11:55:12
阅读次数:
164
题目大意:给定n个数,每次选择两个数,将两数的异或值计入答案,并删掉其中一个,反复如此直到只剩一个数为止,求答案的最大值
每次将选择的两个数连边,那么显然会得到一棵树
用Prim算法求最大生成树即可
#include
#include
#include
#include
#define M 2020
using namespace std;
int n,a[M];
long long...
分类:
其他好文 时间:
2015-04-09 10:33:10
阅读次数:
161
图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图。设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 B(G)。其中 T(G)是遍历图时所经过的边的集合,B(G) 是遍历图时未经过的边的集合。显然,G1...
分类:
编程语言 时间:
2015-04-08 22:58:16
阅读次数:
302
(0)Dijstra 最短路径和prim最小生成树算法,神似,只是在更新dist时的if条件不同;主要是这种prime 的计算两个集合间的最小值的思想非常重要。
(1)某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。
现在,已知起点和终点,请你计算出...
分类:
编程语言 时间:
2015-04-08 21:40:08
阅读次数:
221