hdu1233 还是畅通工程 基础最小生成树
- //克鲁斯卡尔
- #include<iostream>
- #include<algorithm>
- using namespace std;
- const int maxn = ;
- struct node
- {
- int begin, end, len;
- }cun[maxn];
- int n, fa[maxn], ans, m;
- bool cmp(node a, node b)
- {
- return a.len<b.len; //按长度有小到大排序
- }
- void init()
- {
- for (int i = ; i <= n; i++)
- {
- fa[i] = i;
- }
- }
- int find(int x)
- {
- if (x == fa[x])
- return fa[x];
- else
- return fa[x] = find(fa[x]);
- }
- void join(int a, int b)
- {
- a = find(a);
- b = find(b);
- if (a != b)
- fa[b] = a;
- }
- int kruskal()
- {
- sort(cun, cun + m, cmp);
- init(); //初始化并查集
- ans = ;
- for (int i = ; i<m; i++)
- {
- if (find(cun[i].begin) != find(cun[i].end)) //一条边的两个端点不在同一个集合,则选他,并合并
- {
- join(cun[i].begin, cun[i].end);
- ans += cun[i].len;
- }
- }
- return ans;
- }
- int main()
- {
- while (cin >> n)
- {
- if (n == ) break;
- m = n*(n - ) / ;
- for (int i = ; i<m; i++)
- cin >> cun[i].begin >> cun[i].end >> cun[i].len;
- cout << kruskal() << endl;
- }
- return ;
- }
- //prim
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- #define INF 0x7fffffff
- # define MAXN
- typedef long long int LL;
- LL n, m;
- LL cmpa[MAXN][MAXN], book[MAXN], dis[MAXN];
- int main()
- {
- LL a, b, weight, ans, p, q, f1, f2, minn, mark;
- while (scanf("%I64d", &n) && n)
- {
- //初始化 这题prime算法合适,边那摩多,都是完全图了
- for (LL i = ; i<MAXN; i++)
- {
- dis[i] = INF;
- for (LL j = ; j<MAXN; ++j)
- cmpa[i][j] = INF;
- }
- memset(book, , sizeof(book));
- ans = ;
- for (LL i = ; i<n*(n - ) / ; ++i)
- {
- scanf("%I64d %I64d %I64d", &a, &b, &weight);
- cmpa[a][b] = cmpa[b][a] = weight;
- }
- //连通图
- book[] = ;
- dis[] = -;
- for (LL t = ; t<n; ++t)
- {
- for (LL i = ; i <= n; ++i)
- {//更新dis中的值
- for (LL j = ; j <= n; ++j)
- {
- if (book[j] && dis[i]>cmpa[i][j])
- { //j在树中
- dis[i] = cmpa[i][j];
- }
- }
- }
- //选点建树
- minn = INF, mark = ;
- for (LL i = ; i <= n; ++i)
- {
- if (book[i])
- continue;
- else
- {
- if (dis[i] < minn)
- {
- minn = dis[i];
- mark = i;
- }
- }
- }
- if (minn != INF)
- {
- ans += minn;
- book[mark] = ;
- dis[mark] = -;
- }
- }
- cout << ans << endl;
- }
- return ;
- }
hdu1233 还是畅通工程 基础最小生成树的更多相关文章
- hdu1233 继续畅通工程 (最小生成树——并查集)
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- HDU1233 还是畅通工程【最小生成树】
题意: 求出连接各个村庄最小的公路总长度,把最小公路总长度求出来. 思路: 最小生成树原理,带入数据求得. 代码: prim: #include<iostream> #include< ...
- hdu1879 继续畅通工程 基础最小生成树
#include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> u ...
- hdu1863 畅通工程 基础最小生成树
#include <iostream> #include <cstdio> #include <algorithm> #define N 110 #define M ...
- HDU-1233 还是畅通工程 (prim 算法求最小生成树)
prim 算法求最小生成树 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- 最小生成树: HDU1233还是畅通工程
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- HDU1875——畅通工程再续(最小生成树:Kruskal算法)
畅通工程再续 Description相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问题当 ...
- HDU1879--继续畅通工程(最小生成树)
Problem Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计 ...
- HDU1233--还是畅通工程(最小生成树)
Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直 ...
随机推荐
- 《Java虚拟机原理图解》4.JVM机器指令集
0. 前言 Java虚拟机和真实的计算机一样,执行的都是二进制的机器码:而我们将.java 源码编译成.class 文件,class文件便是Java虚拟机可以认识的二进制机器码,Java可以识别cla ...
- HDOJ 5091 Beam Cannon 扫描线
线段树+扫描线: 我们用矩形的中心点来描写叙述这个矩形,然后对于每一个敌舰,我们建立一个矩形中心的活动范围,即矩形中心在该范围内活动就能够覆盖到该敌舰.那么我们要求的问题就变成了:随意一个区域(肯定也 ...
- 4. 基本TCP套接字编程
基本函数接口 socket函数 #include <sys/socket.h> int socket(int family, int type, int protocol); 成功时返回一 ...
- 流媒体开发之开源项目live555---live555 server 编译 包括更改帧率大小
由于要测试8148解码器的性能,需要搭建不同帧率25fps - >30fps,宏块大小defualt 100 000 -> 200 000不同大小的h264码流,所以就需要编译改动的liv ...
- EhCache+Redis实现分布式缓存
Ehcache集群模式 由于 EhCache 是进程中的缓存系统,一旦将应用部署在集群环境中,每一个节点维护各自的缓存数据,当某个节点对缓存数据进行更新,这些更新的数据无法在其它节点中共享,这不仅会降 ...
- maven配置本地仓库和国内镜像仓库,解决国内访问国外中央仓库速度过慢问题
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 1.配置本地仓库 打开conf文件夹下面的setting.xml文件 红色方框为配置本地仓 ...
- HDU - 1269 迷宫城堡(有向图的强连通分量)
d.看一个图是不是强连通图 s.求出强连通分量,看看有没有一个强连通分量包含所有点. c.Tarjan /* Tarjan算法 复杂度O(N+M) */ #include<iostream> ...
- SideBar---fixed定位
<style> /*外层fixed*/ body{ width:2000px; height:2000px; background:#000; } .wrap { position: ...
- codeforces 414B B. Mashmokh and ACM(dp)
题目链接: B. Mashmokh and ACM time limit per test 1 second memory limit per test 256 megabytes input sta ...
- POJ3696:The Luckiest number(欧拉函数||求某数最小的满足题意的因子)
Chinese people think of '8' as the lucky digit. Bob also likes digit '8'. Moreover, Bob has his own ...