/*
题目描述:省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。
输入:测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M (N, M < =100 );随后的 N 行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
输出:对每个测试用例,在1行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出“?”。
样例输入:
3 3
1 2 1
1 3 2
2 3 4
1 3
2 3 2
0 100
样例输出:
3
?
*/
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>using namespace std;const int M = 100 + 10;
const int N = M * (M - 1) / 2;int p[M];
int u[M];
int v[M];
int cost[M];
int m, n;
int id[M];int cmp(const void *a, const void *b);
int find(int x);int main()
{#ifndef ONLINE_JUDGEifstream cin("d:\\OJ\\uva_in.txt");#endif // ONLINE_JUDGEwhile (cin >> n >> m) {if (n == 0) break;memset(p, -1, sizeof(p));for (int i = 1; i <= n; i++) {id[i] = i;cin >> u[i] >> v[i] >> cost[i];}qsort(&id[1], n, sizeof(int), cmp);int ans = 0;for (int i = 1; i <= n; i++) {int a = find(u[id[i]]);int b = find(v[id[i]]);if (a != b) {ans += cost[id[i]];p[b] = a;}}int cnt = 0;for (int i = 1; i <= m; i++) {if (p[i] < 0)cnt++;}if (cnt > 1)cout << "?" << endl;else {cout << ans << endl;}}return 0;
}int cmp(const void *a, const void *b)
{int *pa = (int *)a;int *pb = (int *)b;return cost[*pa] - cost[*pb];
}int find(int x)
{return p[x] < 0 ? x: p[x] = find(p[x]);
}

题目1024:畅通工程相关推荐

  1. 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)

    题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有 ...

  2. 九度OJ——1024畅通工程

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

  3. 九度OJ——1028继续畅通工程

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

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

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

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

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

  6. HDOJ 1875 HDU 1875 畅通工程再续 ACM 1875 IN HDU

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

  7. 畅通工程 hdu 1232 HDU - 1863 (并查集+最小生成树)

    畅通工程hdu 1232 并查集 Problem Description Input Output 参考代码 HDU - 1863 Problem Description Input Output 参 ...

  8. 九度oj 题目1028:继续畅通工程

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

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

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

最新文章

  1. 手把手pytorch-transformers实战
  2. SharePoint 2013 如何使用TaxonomyWebTaggingControl 控件
  3. Idea自带工具解决冲突
  4. docker安装gitlab_Gitlab 中 CI/CD 自动化部署与使用
  5. 一个B/S结构自动二次请求需求的实现
  6. Scude导入MySQL_FM2017_FMF赛季更新和真实修正数据库[更新至9.9,超过89000个更新]
  7. doc自动生成html,java web应用中自动生成文章html页面的实现.doc
  8. 我并不想劝人创业当老板
  9. ubuntu 14.04 下 安装samba 及SSH 服务端的方法
  10. OpenCV Mat 类型定义和赋值
  11. struts2中struts.xml配置文件详解
  12. tensorflow实现手写数字识别
  13. 需求分析(团队作业3)
  14. 【编译原理】语义分析S属性定义的自下而上计算
  15. 直播APP软件开发,直播系统开发的技术架构揭秘
  16. Spring Cloud 微服务项目实战 -
  17. Rigify:面向初学者解决Rigify各种错误的入门级通用解决办法
  18. 穿越派·派盘 + Solid Explorer = 全能 Android 文件管理器
  19. 《九》微信小程序中的自定义组件
  20. python多线程爬虫案例之爬取麦田

热门文章

  1. .NET常见线程简介
  2. python开发的软件sparrow-黑客常用wifi蓝牙分析攻击工具,让你的设备陷入危险之中...
  3. pycharm和python区别-一些 PyCharm 的使用和设置建议
  4. python能绘制统计图吗-Python数据科学(九)- 使用Pandas绘制统计图表
  5. python 类-Python中的类
  6. python职能-最受欢迎的10家互联网公司揭秘Python薪资!
  7. 2!=5 or 0在python中是否正确-python and or用法
  8. python画图哆啦a梦-python 绘制哆啦A梦
  9. python源代码-Python 源码深度剖析
  10. python语言怎么学-怎么学Python语言呢?粤嵌Python学习路线入门