最小生成树
最小生成树
River_____________
这个作者很懒,什么都没留下…
展开
-
Agri-Net POJ - 1258
题意: john当上了镇长,打算给每个农场都连接网络,需要用最小的成本连接其他所有农场,所以要找最少的纤维连在一起,任何两个农场之间的距离不超过十万。输入n,下面有n行n列,代表着每两个农场的距离,对角线为0,因为自己到自己是为0;分析:直接暴力连接,任选一个起点,每次搜索与起点相距最小的点,然后把上一次的终点再作为起点,直到全部连接。收获: 这样的连接方式肯定要是链状的原创 2017-03-04 08:56:59 · 196 阅读 · 0 评论 -
POJ-1287(裸的Krustra)
#include #include #include #include #include #include using namespace std;int V,E;const int maxn = 10000+10;int father[maxn];void Init(){ for(int i = 0; i < maxn ;i++) { f原创 2017-07-14 22:00:10 · 333 阅读 · 0 评论 -
铁路修复计划(裸Kruskal+二分)
直接二分k的最大值(接一个Kruskal判断就可以了)。。。铁路修复计划Time limit per test: 2.0 secondsTime limit all tests: 15.0 secondsMemory limit: 256 megabytes在 A 国有很多城际铁路。这些铁路都连接两个城市(城市从 1 到 n 编号),可以双向原创 2017-05-13 10:59:48 · 416 阅读 · 0 评论 -
比prim更朴素的Kruskal
int Find(int s){ return father[s]==s?s:Find(father[s]);}bool same(int a,int b){ a=Find(a); b=Find(b); return a==b;}void init_union_find(v)//并查集的初始化{ for(int i=0;i<=v;i++)原创 2017-03-26 22:05:28 · 256 阅读 · 0 评论 -
POJ2412(最简单的prim)
给出的已经联通的道路,直接将道路的距离赋值为0就可以了。。。。#include #include #include using namespace std;const int max_v=1000;const int INF = 10000000;int cost[max_v][max_v];int mincost[max_v];bool used [max_v];int原创 2017-03-26 21:42:48 · 378 阅读 · 0 评论 -
HDU1233(最朴素的prim)
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。Input测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对原创 2017-03-26 21:12:08 · 208 阅读 · 0 评论 -
最朴素的prim算法
/* 朴素的prim来实现最小生成树*/int cost[max_v][max_v];//cost[u][v] 代表边e=(u,v)的权值int mincost[max_v];//从集合x出发的边到每个集合的最小权值bool used [max_v];//顶点i是否包括在集合x中int v;//顶点数int prim(){ for(int i=0;i<v;i++) {原创 2017-03-26 19:13:23 · 287 阅读 · 0 评论 -
Bad Cowtractors POJ - 2377(最大生成树)
最大生成树的思路很简单就是把排序的方向变一下优先选择cost大的路径建树就可以了Bessie has been hired to build a cheap internet network among Farmer John's N (2 <= N <= 1,000) barns that are conveniently numbered 1..N. FJ has already do原创 2017-03-31 15:16:52 · 295 阅读 · 0 评论 -
UVA 1359(最瘦生成树)
开始sb了,竟然按照无向图来输入的边。。。。。并且循环的还是一半的边。。。。枚举【i,j】区间内的边,最大差值就是j边的cost减去i边的cost,在能够组成树时更新最小值就可以了。1.SB写法(错)#include #include #include using namespace std;const int maxn=105;const int INF=10000原创 2017-03-30 14:12:17 · 360 阅读 · 0 评论 -
POJ 3723(裸体Kruskal)
有关系的男女之间要建立最大生成树,每建立一条通路就意味着会有多一个的人不通过10000/人的方式进入。记录以不同方式进入队伍的人的个数和这些人的总耗费,最后加上耗费,总人数里减去这些人数就可以了。Windy has a country, and he wants to build an army to protect his country. He has picked up原创 2017-03-29 19:38:18 · 368 阅读 · 0 评论 -
Highways POJ - 2485
最小生成树最大边#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int maxn = 100000+10;struct Edge{ int from , to , cost; ...原创 2018-05-24 10:30:29 · 245 阅读 · 0 评论