Kruskal HDOJ 1233 还是畅通工程
题目传送门
1 /* 2 最小生成树之kruskal算法--并查集(数据结构)实现 3 建立一个结构体,记录两点和它们的距离,依照距离升序排序 4 不连通就累加距离,即为最小生成树的长度 5 */ 6 #include <cstdio> 7 #include <algorithm> 8 #include <cstring> 9 #include <cmath> 10 using namespace std; 11 12 const int MAXN = 5e3 + 10; 13 const int INF = 0x3f3f3f3f; 14 int rt[MAXN]; 15 struct Node 16 { 17 int u, v, w; 18 }node[MAXN]; 19 20 bool cmp(Node x, Node y) {return x.w < y.w;} 21 22 int Find(int x) {return (rt[x] == -1) ? x : rt[x] = Find (rt[x]);} 23 24 void Union(int x, int y) 25 { 26 x = Find (x); y = Find (y); 27 if (x > y) rt[y] = x; 28 else if (x < y) rt[x] = y; 29 } 30 31 bool same(int x, int y) {return (Find (x) == Find (y));} 32 33 int main(void) //HDOJ 1233 还是畅通工程 34 { 35 //freopen ("inB.txt", "r", stdin); 36 int n, m; 37 38 while (~scanf ("%d", &n) && n) 39 { 40 m = n * (n - 1) / 2; 41 memset (rt, -1, sizeof (rt)); 42 for (int i=1; i<=m; ++i) 43 { 44 scanf ("%d%d%d", &node[i].u, &node[i].v, &node[i].w); 45 } 46 sort (node+1, node+1+m, cmp); 47 int sum = 0; 48 for (int i=1; i<=m; ++i) 49 { 50 int x = node[i].u; int y = node[i].v; 51 int w = node[i].w; 52 if (!same (x, y)) {Union (x, y); sum += w;} 53 } 54 printf ("%d\n", sum); 55 } 56 }
转载于:https://www.cnblogs.com/Running-Time/p/4512994.html
Kruskal HDOJ 1233 还是畅通工程相关推荐
- HDOJ 1233 还是畅通工程
实在伤心,一口气A了三个畅通工程,太简单的原因把.这个畅通工程求的是最小的公路长度,就是最小生成树,点太少无向图,prim就好了. #include<stdio.h> #include&l ...
- HDU 1233 还是畅通工程(最小生成树 Prim+Kruskal)
原题地址 http://acm.hdu.edu.cn/showproblem.php?pid=1233 题意:(最小生成树裸题)有N个村庄,给出村庄两两之间的距离,要求铺设公路,使得任何两个村庄间都可 ...
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
还是畅通工程 Time Limit: 4000/2 ...
- HDU 1233 还是畅通工程(最小生成树)
传送门 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- HDU 1233 - 还是畅通工程
Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直 ...
- HDOJ P1233 还是畅通工程
还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- hdu 1233 还是畅通工程 Kruskal 最小生成树 并查集
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1233 模板题,kruskal求最小生成树. 并查集是个好东西啊 就是注意一点 输入边的信息时,角标 ...
- hdu 1233 还是畅通工程(最小生成树的Prim和Kruskal两种算法的c++实现)(prim算法详解)...
赤裸裸滴最小生成树(MST),刚学的玩意,用两种方法熟练一下.(都是greedy) Kruskal方法:先对边按照代价非递减排序,再不断添加边且不产生环路,当边数=点数-1结束.判断加入(v,w)是否 ...
- HDU 1233 还是畅通工程。
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1233 x 解题思路: 简单的最小生成树 实现代码: #include <iostream> ...
最新文章
- (C++)1037 在霍格沃茨找零钱的两种解法
- 限量!“Java成长笔记”Spring Boot/Sentinel/Nacos高并发
- java多态 降低代码耦合性_深度分析:理解Java中的多态机制,一篇直接帮你掌握!...
- linux配置英文,linux 系统配置命令(国外英文资料).doc
- bzoj 3195 奇怪的道路
- linux shell数组动态在for中追加元素及其遍历
- Hello Blazor:(14)CSS隔离
- 玩转oracle 11g(45):关系数据库
- 是真“开发者”,就来一“测”到底!
- 【Flink】Rowtime timestamp is null. Please make sure that a proper TimestampAssigner is defined and th
- 【个人笔记】OpenCV4 C++ 快速入门 05课
- CCNA学习指南 TCP/IP
- 汇编语言转c语言的软件,Arm汇编转换器下载
- 利用IV分析仪测量二极管的伏安特性
- C语言实现约分最简分式
- html编写花,HTML5的花儿
- 骨传导蓝牙耳机哪个牌子好?最受欢迎的五款骨传导蓝牙耳机
- 如何给视频添加水印logo?
- linux创建文件内容三行,Linux 文本处理三剑客
- 设计模式之结构型模型