惠民工程(最小生成树裸题)
惠民工程
Time Limit:1000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu
Submit
Status
Description
市政府“惠民工程”的目标是在全市n个居民点间之架设煤气管道(但不一定有直接的管道相连,只要能间接通过管道可达即可)。很显然最多可架设 n(n-1)/2条管道,然而实际上要连通n个居民点只需架设n-1条管道就可以了。现请你编写程序,计算出该惠民工程需要的最低成本。
Input
测试输入包含若干测试用例。每个测试用例的第1行给出居民点数目M ( < =100 )、 评估的管道条数 N;随后的 N 行对应居民点间管道的成本,每行给出一对正整数,分别是两个居民点的编号,以及此两居民点间管道的成本(也是正整数)。为简单起见,居民点从1到M编号。
Output
对每个测试用例,在1行里输出全市管道畅通所需要的最低成本。若统计数据不足以保证畅通,则输出“?”。
Sample Input
3 3
1 2 1
1 3 2
2 3 4
3 1
2 3 2
Sample Output
3
?
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#define MaxInt 100000
using namespace std;
struct typ{int q,z,w;
}eg[10005];
int fa[105];
int find(int x){int r=x;while(fa[r]!=r)r=fa[r];int i=x,t;while(fa[i]!=r){t=fa[i];fa[i]=r;i=t;}return r;
}
bool cmp(struct typ a,struct typ b){return a.w<b.w;
}
int main()
{freopen("in.txt","r",stdin);int m,n;while(~scanf("%d%d",&m,&n)){for(int i=0;i<n;i++){scanf("%d%d",&eg[i].q,&eg[i].z);scanf("%d",&eg[i].w);}for(int i=0;i<=m;i++) fa[i]=i;sort(eg,eg+n,cmp);int ans=0,tot=0,flag=0;for(int i=0;i<n;i++){int f1=find(eg[i].q);int f2=find(eg[i].z);if(f1!=f2){fa[f1]=f2;tot++;ans+=eg[i].w;if(tot==m-1) {flag=1;break;}}}if(flag) cout<<ans<<endl;else cout<<"?"<<endl;}return 0;
}
惠民工程(最小生成树裸题)相关推荐
- 惠民工程(最小生成树)
惠民工程 Description 市政府"惠民工程"的目标是在全市n个居民点间之架设煤气管道(但不一定有直接的管道相连,只要能间接通过管道可达即可).很显然最多可架设 n(n-1 ...
- 惠民工程(2013中南大学研究生复试[最小生成树])
惠民工程 CSU - 1264 时限: 1000MS 内存: 131072KB 64位IO格式: %lld & %llu 提交 状态 已开启划词翻译 问题描述点击打开链接 市政府&qu ...
- 1004: 惠民工程
题目描述 市政府"惠民工程"的目标是在全市n个居民点间之架设煤气管道(但不一定有直接的管道相连,只要能间接通过管道可达即可).很显然最多可架设 n(n-1)/2条管道,然而实际上要 ...
- 【HDU - 1102】Constructing Roads (最小生成树裸题模板)
题干: There are N villages, which are numbered from 1 to N, and you should build some roads such that ...
- 【OpenJ_Bailian - 1258】【POJ - 1258】Agri-Net (最小生成树裸题)
题干: Farmer John has been elected mayor of his town! One of his campaign promises was to bring intern ...
- 1004: 惠民工程 (2013年中南大学研究生复试机试 )
1004: 惠民工程 时间限制: 1 Sec 内存限制: 128 MB 提交: 404 解决: 81 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 市政府"惠民工程&q ...
- 2013年中南大学复试-惠民工程
2013年中南大学复试机试题解 惠民工程 题目来源: http://pipioj.online/problem.php?id=1004. 题目描述 市政府"惠民工程"的目标是在全市 ...
- PIPIOJ 1004: 惠民工程
题目链接: 传送门 题目描述: 市政府"惠民工程"的目标是在全市n个居民点间之架设煤气管道(但不一定有直接的管道相连,只要能间接通过管道可达即可).很显然最多可架设 n(n-1)/ ...
- CSP认证201412-4 最优灌溉[C++题解]:最小生成树裸题、Kruskal算法求最小生成树
题目分析 来源:acwing 分析:这是一道最小生成树的裸题. 这里默写Kruskal求最小生成树的最小费用的模板. 最小生成树模板请参考笔者的另一篇博文: 最小生成树板子-AcWing 859. K ...
最新文章
- 学习电脑软件_推荐5款从零基础学习打字的电脑软件
- 《LeetCode力扣练习》第226题 翻转二叉树 Java
- 五丶阿东安装部署教程+青龙对接阿东及傻妞实现自动登录
- python安装venv_Python创建virtualenv(虚拟环境)方法及安装Ubuntu
- STM32之SDIO原理
- Jzzhu and Chocolate(CF-449A)
- HTML5表单提交和PHP环境搭建
- MVC 自定义属性验证登录
- 在Spark上运行WordCount程序
- imewlconverter 制作Rime词库
- 工商银行B2C支付接口JAVA版(未完)
- python+django+mysql疫苗预约系统毕业设计毕设开题报告
- 实验中应该遵循的几个原则
- 用遗传算法解决无线传感器轮值问题(Duty Cycle)
- 开发环境 -- 在linux中写一个脚本拷机
- 如何快速开发一个自己的微信小程序
- C语言已知三边求三角形的面积
- Phonetic symbol 双元音 -- ɪə
- 动力煤全年跌幅约148[中煤远大智慧煤炭产业平台]
- html基础 vscode写代码