HDU - 1863-畅通工程(最小生成树)
省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。
Input
测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N
行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。
Output
对每个测试用例,在1行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出“?”。
Sample Input
3 3 1 2 1 1 3 2 2 3 4 1 3 2 3 2 0 100
Sample Output
3 ?
裸题
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>using namespace std;int pre[1005];
struct node {int x,y;int val;
} p[50005];
int find(int x) {if(x==pre[x])return x;elsereturn pre[x]=find(pre[x]);
}
bool merge(int x,int y) {int fx=find(x);int fy=find(y);if(fx!=fy) {pre[fx]=fy;return true;} else {return false;}
}
bool cmp(node x,node y) {return x.val<y.val;
}
int main() {int N,M;while(scanf("%d%d",&M,&N)!=EOF) {if(M==0)break;int cnt=0;for(int t=1; t<=N; t++) {pre[t]=t;}for(int t=1; t<=M; t++) {scanf("%d%d%d",&p[t].x,&p[t].y,&p[t].val);}sort(p+1,p+M+1,cmp);long long int sum=0;for(int t=1; t<=M; t++) {if(cnt==N-1) {break;}if(merge(p[t].x,p[t].y)) {sum+=p[t].val;cnt++;}}if(cnt==N-1)printf("%lld\n",sum);else {printf("?\n");}}return 0;
}
转载于:https://www.cnblogs.com/Staceyacm/p/10781984.html
HDU - 1863-畅通工程(最小生成树)相关推荐
- HDU 1863畅通工程(最小生成树)(prim算法)
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU 1863 畅通工程 最小生成树
思路: 比较典型的最小生成树的题目了..在这里用求最小生成树的经典算法K(Kruskal)算法和P(Prim)算法.我的 K 算法用的是结构体来存图,P 算法用的是邻接矩阵来存图,K算法的复杂度是O( ...
- HDU 1863 畅通工程
畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU——1863 畅通工程(最小生成树问题)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863 题意:有m个村庄,还给出了n条道路的具体信息.问你能否使m个村庄畅通,且最小花费是多少? 解题思 ...
- HDOJ 1863畅通工程(最小生成树kruskal算法并查集实现)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1863 最小生成树kruskal算法:http://www.zhuoda.org/irini/78592.h ...
- hdu 1232 畅通工程 最小生成树 并查集
1232的连接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 #include <iostream>#include <cstdio& ...
- hdu 1879 继续畅通工程 最小生成树
继续畅通工程 Time Limit: 2000/ ...
- hdu 1233 还是畅通工程 最小生成树(prim算法 + kruskal算法)
还是畅通工程 Time Limit: 4000/2 ...
- hdu 1879 继续畅通工程 (最小生成树)
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU 1879 继续畅通工程 最小生成树
继续畅通工程 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
最新文章
- Java线程池实现原理及其在美团业务中的实践
- java 注解报错_java注解验证接收参数 返回注解字段的错误
- 巅峰极客2021 what_pickle——一道综合性的python web
- Python中九种格式化输出方法,你都知道吗?
- apollo 配置中心_apollo-1:apollo配置中心单机模拟分布式部署
- java发送get post请求_【工具】java发送GET、POST请求
- 使用to like动词_17
- 数据分析师熬夜整理:最全「零售业」数据指标和使用技巧
- 什么是Semantic(语义)?从互联网爬虫、自动驾驶到对话机器人
- NLP学习—20.WMD paper及代码
- 关于python字符串format的一些花式用法
- 【OpenCV学习笔记】【函数学习】十九(感兴趣区域)
- android 模拟器加速,android开发怎么设置加速模拟器如真机运行
- 注意丨Pearson VUE身份证件政策要求
- python层次分析法案例_在R语言中使用层次分析法-案例1
- java 递归死循环_java嵌套事物与递归调用避免死循环问题
- 【GT】Assembler 源码解读及使用 !Cocos Creator!
- element-ui表格合并数据相同行
- vba 定义类_excel编程系列基础:认识VBA的编辑器VBE
- 冇内容管理系统分析-js中关于array的slice和sort方法(转自JavaEye)
热门文章
- scrapy-redis爬虫如何发送POST请求
- oracle11g设置数据库归档,oracle_Oracle11g RAC开启关闭、设置归档小结,关闭
1.先关数据库:
复制代 - phpStudy...
- 好用的shell_Linux系统安全 | Linux中的Shell和Bash
- linux运维项目redis简历,redis简介
- java 时间回退_java.time DateTimeFormatter使用灵活的回退值进行解析
- 照片看3秒就销毁的软件_3.9秒破百,比亚迪汉EV到店实拍:实车比照片更好看
- python3.5模块大全-python tkinter模块使用大全(超全)
- java ear和war_JAR、WAR、EAR的使用和区别
- mysql创建表语句 cmd_MySQL 创建数据表
- imac java7下载地址,如何在苹果电脑上安装JAVA开发工具,经验告诉你该这样