HDU-1863 畅通工程
来源:互联网 发布:展示实时数据 时间轴 编辑:程序博客网 时间:2024/05/21 07:06
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int maxn = 5000 + 5;int n, m, ans, cnt;bool flag;struct streat{ int op; int ed; int cost; bool operator < (const streat Next) const { return cost < Next.cost; }} edge[maxn];int root[105];int Find(int x){ return root[x] == x ? x : root[x] = Find(root[x]);}void Kruskal(){ ans = 0; for(int i = 1; i <= m; i ++) root[i] = i; sort(edge, edge + n); cnt = 0; for(int i = 0; i < n; i ++) { int x = Find(edge[i].op); int y = Find(edge[i].ed); if(x != y) { root[y] = x; ans += edge[i].cost; cnt ++; } if(cnt == m - 1) { flag = true; break; } }}int main(){ while(scanf("%d %d", & n, & m) && n) { for(int i = 0; i < n; i ++) scanf("%d %d %d", & edge[i].op, & edge[i].ed, & edge[i].cost); flag = false; Kruskal(); if(flag) printf("%d\n", ans); else printf("?\n"); } return 0;}
题意:
目标是使全省任何两个村庄间都可以实现公路交通。测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N
行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
题解:
…
0 0
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- hdu 1863 畅通工程
- HDU-畅通工程-1863
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- HDU 1863 畅通工程
- hdu 1863 畅通工程
- HDU-1233 还是畅通工程
- 活动之间数据的传递
- Android通过PHP连接MySQL数据库(插入)
- FreeMarker 指令
- 库编译
- HDU-1863 畅通工程
- 北京-IT技术狗-顾名思义 解释一下当时随手写下这个名字
- Codeforces Round #201 (Div. 2) 347C Alice and Bob(脑洞)
- 有向图中单个源点到终点的最短路径--Dijkstra算法与实现
- muduo网络库源码学习————原子性操作Atomic.h
- 九度OJ 题目1130:日志排序
- JSP页面的五种跳转方法
- iOS 代理 协议
- swift学习之路-数组