Problem Description
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
Input
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
当N为0时,输入结束,该用例不被处理。
Output
对每个测试用例,在1行里输出最小的公路总长度。
Sample Input
3 1 2 1 1 3 2 2 3 4 4 1 2 1 1 3 4 1 4 1 2 3 3 2 4 2 3 4 5 0
Sample Output
3 5

Hint

Hint

Huge input, scanf is recommended.

AC代码:

#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"
#include "stdlib.h"
using namespace std;
const int maxn = 105;
int par[maxn], n, m, ans, num;
struct node
{/* data */int sv, ev, w;
}e[10005];
bool cmp(node a, node b)
{return a.w < b.w;
}
int find(int x)
{if(par[x] == x) return x;return par[x] = find(par[x]);
}
void kru()
{for(int i = 0; i < m && num < m; ++i) {int a = e[i].sv, b = e[i].ev, c = e[i].w;a = find(a);b = find(b);if(a != b) {num++;ans += c;par[a] = b;}}
}
int main(int argc, char const *argv[])
{while(scanf("%d", &n) != EOF && n) {ans = 0;num = 0;m = n * (n - 1) / 2;for(int i = 1; i <= n; ++i)par[i] = i;for(int i = 0; i < m; ++i)scanf("%d%d%d", &e[i].sv, &e[i].ev, &e[i].w);sort(e, e + m, cmp);kru();     printf("%d\n", ans);}return 0;
}

HDOJ1233 还是畅通工程(kru)相关推荐

  1. [kuangbin带你飞]专题六 最小生成树 L - 还是畅通工程 (简单最小生成树)

    L - 还是畅通工程 题目链接:https://vjudge.net/contest/66965#problem/L 题目: 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府&qu ...

  2. 并查集 HDOJ 1232 畅通工程

    题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...

  3. 畅通工程//最小生成树prim

    题目: 畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  4. 【1863】畅通工程 (HDU)

     畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  5. HDOJ 1874 HDU 1874 畅通工程续 ACM 1874 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:          http://acm.hdu.edu.cn/showproblem.php?pid=1874 ...

  6. 畅通工程 HDU - 1233 

    某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可 ...

  7. Kruskal HDOJ 1233 还是畅通工程

    题目传送门 1 /* 2 最小生成树之kruskal算法--并查集(数据结构)实现 3 建立一个结构体,记录两点和它们的距离,依照距离升序排序 4 不连通就累加距离,即为最小生成树的长度 5 */ 6 ...

  8. hdu1879 继续畅通工程 最小生成树

    继续畅通工程 此题明显属于最小生成树的题目 关于最小生成树,有两种方法,一种是Kruskal方法,一种是Prim算法,第一种用并查集即可实现 1 /* 2 hdu1879 3 2013-03-18 1 ...

  9. 题目1028:继续畅通工程

    /********************************************* 题目描述:省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有 ...

  10. 题目1024:畅通工程

    /* 题目描述:省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建 ...

最新文章

  1. 一个「PPT」框架,让超大模型调参变简单:清华刘知远、黄民烈团队力作
  2. 人工智能高考511分,未来有望考上东京大学!
  3. 客户端oracle12537连接关闭,ORA-12537:TNS:连接关闭 和 TNS-12547: TNS: 丢失连接
  4. Vue实现仿音乐播放器3-将项目托管到git以及github
  5. SQL SERVER 一个SQL语句的执行顺序
  6. aix 安装oracle9,IBM P570 小型机AIX5.3系统安装ORACLE9i
  7. div背景透明内容不透明与0.5PX边框兼容设置
  8. 财付通php接口,dedecms 财付通接口,dedecms财付通_PHP教程
  9. java虚拟机内存告警_java虚拟机内存溢出各种场景总结
  10. react-native this使用笔记
  11. 编写 matlab_MATLAB的SFunction编写指导
  12. php中双等与三等,利用php中双等于和三等于的区别,无需密码拿到flag
  13. 活动预告|一个重塑区块链行业生态的新物种即将诞生!
  14. 什么是迁移学习?它都用在深度学习的哪些场景上?
  15. PHPCMS GBK转UTF8
  16. magisk卸载内置软件_红米Note7 MIUI12 10.15版 主题和谐 Magisk 省电稳定 迅雷会员
  17. linux条件变量cond,Linux C 条件变量cond的使用记录
  18. Ralink SDK相关指令总结
  19. postgresql兼容MySQL on update current_timestamp
  20. 百趣代谢组学资讯:@熬夜的年轻人代谢紊乱急救包-喝普洱茶!

热门文章

  1. 计算机solidwork实训报告,solid works学习心得范文
  2. 更好用计算机怎么打,电脑输入法哪个好用(最受欢迎的7大输入法对比详情)...
  3. Git报错解决:fatal: unable to access ‘https://github.com/.......‘: OpenSSL SSL_read: Connection was reset
  4. linux下mp3编码库libmp3lame的开发使用
  5. ppt制作心得【转发】
  6. vim 使用系统粘贴板复制粘贴
  7. 做SEO优化第九步:如何设置页面内容优化
  8. 如何获取国际短信验证码---创蓝253国际短信接口调用demo
  9. 什么是javabean及其用法(转)
  10. Linux 服务器上传文件到阿里网盘