题目描述

省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。

输入

测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M (N, M < =100 );随后的 N 行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。

输出

对每个测试用例,在1行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出“?”。

样例输入

3 4
1 2 1
2 3 2
3 4 3
2 4
1 2 1
3 4 2
0 5

样例输出

6
?
#include <iostream>
#include <algorithm>
#include <vector>using namespace std;const int maxn = 100+10;
const int inf = 1000000000;int a, b; //村庄数目//kruskal
struct edge
{int u, v, dis;
}E[maxn];int father[maxn];
int find_father(int x)
{int a = x;while(x != father[x]){x = father[x];}while(a != father[a]){int z = a;a = father[a];father[z] = x;}return x;
}bool cmp(edge a, edge b)
{return a.dis < b.dis;
}int kruskal(int n, int m)
{int ans = 0, num_edge = 0;for(int i = 1; i <= n; i++){father[i] = i;}sort(E, E+m, cmp);for(int i = 0; i < m; i++){int fa = find_father(E[i].u);int fb = find_father(E[i].v);if(fa != fb){father[fa] = fb;ans += E[i].dis;num_edge++;if(num_edge == n - 1) break;}}if(num_edge != n - 1){return -1;}else return ans;
}int main()
{while(scanf("%d%d", &b, &a) && b){for(int i = 0; i < b; i++){int a, b, c;scanf("%d%d%d", &E[i].u, &E[i].v, &E[i].dis);}int ans = kruskal(a, b);if(ans == -1) printf("?\n");else printf("%d\n", ans);}return 0;
}

Codeup-问题 C: 畅通工程相关推荐

  1. Codeup墓地-问题 D: 继续畅通工程

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

  2. Codeup墓地-问题 A: 还是畅通工程

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

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

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

  4. 并查集 HDOJ 1232 畅通工程

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

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

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

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

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

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

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

  8. 畅通工程 HDU - 1233 

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

  9. Kruskal HDOJ 1233 还是畅通工程

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

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

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

最新文章

  1. SKU表管理之删除SKU表数据
  2. 今年天津分数线高考成绩查询2021年,2021年天津高考分数线预测(2021年天津高考录取分数线)2021年天津高考分数会降低吗...
  3. 6 redhat 查看rtc时间_修改linux系统时间、rtc时间以及时间同步
  4. rest_framework 视图/路由/渲染器/认证授权/节流
  5. protobuf使用说明
  6. 控制uibutton的title范围
  7. mysql如何计算qps_如何计算MySQL中的QPS及TPS指标
  8. 在VS2012中实现Ext JS的智能提示
  9. 关于redis集群脑裂及其解决方案
  10. 在python中使用什么函数进行输出_Python中使用pprint函数进行格式化输出的教程
  11. matlab 反复激活无效——许可证到期
  12. 计算电磁学(三)有限差分方法
  13. 随机样本,方便样本与资源回应样本
  14. [奇异吸引子]相关知识点
  15. html 语言 背景颜色,如何在HTML中设置背景颜色?
  16. python的奇怪符号 -> 与 ...(点点点)
  17. 书单丨压箱底儿的10本传世计算机经典著作
  18. Microsoft Office安装全过程记录
  19. 深度学习 音乐分类_一种基于深度学习的音乐个性化分类推荐方法与流程
  20. matlab示波器绘图工具,快速绘制Simulink示波器波形

热门文章

  1. 【玩转cocos2d-x之二十六】数据结构CCDictionary
  2. 手把手教你玩转SOCKET模型:重叠I/O篇
  3. 原始 H.264 码流播放
  4. 标准STUN判断NAT类型的过程及改进
  5. Simpleperf介绍
  6. 解决延迟有 Wi-Fi 6 就够了!
  7. 如何选择适合自己网站的防盗链
  8. 多图 | 操作系统中,进程与线程怎么设计的?
  9. 混沌系列 | 其实制造“假死”很容易
  10. 为了追求极致的性能,Kafka掌控这11项要领