ACM: 继续畅通工程-并查集-最小生成树-解题报告
- 继续畅通工程
- Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
- Submit
- Status
- Description
- 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。
- Input
- 测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < N < );随后的 N(N-)/ 行对应村庄间道路的成本及修建状态,每行给4个正整数,分别是两个村庄的编号(从1编号到N),此两村庄间道路的成本,以及修建状态:1表示已建,0表示未建。
- 当N为0时输入结束。
- Output
- 每个测试用例的输出占一行,输出全省畅通需要的最低成本。
- Sample Input
- Sample Output
- 最小生成树,在并查集的基础上增加了一个排序,耗资从小到大,维护孤立村庄个数。
AC代码:
- #include"iostream"
- #include"cstdio"
- #include"algorithm"
- #include"cmath"
- #include"cstring"
- using namespace std;
- int pe[200];
- struct node {
- int a,b,m,ok;
- } vill[10000];
- int find(int x) {
- return pe[x]==x?x:(pe[x]=find(pe[x]));
- }
- bool cmpok(node a,node b) {
- if(a.ok!=b.ok) return a.ok>b.ok;
- //【一开始想着吧ok为1的全部放在前面,然后再按照m从小到大排列,后来发现不需要,也就没改了。】
- else return a.m<b.m;
- }
- int main() {
- int n,m,num;
- long long money;
- while(~scanf("%d",&n)) {
- if(!n)break;
- money=0;
- num=n-1;
- for(int i=0; i<=n; i++) {
- pe[i]=i;
- }
- int nn=n*(n-1)/2;
- for(int i=0; i<nn; i++) {
- scanf("%d%d%d%d",&vill[i].a,&vill[i].b,&vill[i].m,&vill[i].ok);
- if(vill[i].ok) { //在这里直接把已经修好的路全部连起来
- int rt1=find(vill[i].a);
- int rt2=find(vill[i].b);
- if(rt1!=rt2) {
- pe[rt2]=rt1;
- num--;
- }
- }
- }
- sort(vill,vill+nn,cmpok);
- for(int i=0; i<nn; i++) {
- int rt1=find(vill[i].a);
- int rt2=find(vill[i].b);
- if(rt1!=rt2) { //如果没修路就修m最小的一条路,记录总金钱
- pe[rt2]=rt1;
- money+=vill[i].m;
- num--; //孤立的村庄的个数。
- if(num==0)break;
- }
- }
- printf("%I64d\n",money);
- }
- return 0;
- }
ACM: 继续畅通工程-并查集-最小生成树-解题报告的更多相关文章
- ACM: 还是畅通工程-并查集-最小生成树-解题报
还是畅通工程 Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 某省调查乡村交通 ...
- ACM: meixiuxiu学图论-并查集-最小生成树-解题报告
/* 最小生成树,最小环的最大权值按照排序后去构建最小生成树就可以了,注意遇到的第一个根相同的点就记录权值,跳出,生成的环就是最小权值环. */ //AC代码: #include"iostr ...
- hdu 1863 畅通工程 (并查集+最小生成树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863 畅通工程 Time Limit: 1000/1000 MS (Java/Others) M ...
- HDU1863畅通工程---并查集+最小生成树
#include<cstdio> #include<algorithm> #define MAX 105 struct edge { int from,to; long lon ...
- hdu 1233 还是畅通工程 并查集or最小生成树
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路 ...
- ACM: 畅通工程-并查集-解题报告
畅通工程 Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 某省调查城镇交通状况 ...
- 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
题目地址:http://ac.jobdu.com/problem.php?pid=1024 题目描述: 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但 ...
- B - 畅通工程(并查集)
对并查集理解之后就可以做这种题了,虽说这种题做的不多,这道题做过才这么快搞定,可是还是挺happy滴,加油 Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接 ...
- [HDOJ1232]畅通工程(并查集)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1232 题目描述 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表, ...
随机推荐
- 启动ip转法功能
这种方法无需重启: [root@ha02 ~]# cat /proc/sys/net/ipv4/ip_forward [root@ha02 ~]# sysctl -w net.ipv4.ip_forw ...
- EF学习 笔记-----EF映射
http://www.cnblogs.com/guomingfeng/archive/2013/06/15/mvc-ef-configuration-migration.html EF flountA ...
- Logcat打印调试信息
Android Logcat调试中的V.D.I.W.E的分别代表什么? Log.v -- 黑色 -- verbose infoLog.d -- 蓝色 -- debug infoLog.i -- 绿色 ...
- 【Java环境变量的配置问题】
首先是JVM.JRE.JDK三者之间的关系: java的跨平台性依赖于Java虚拟机:jvm(Java Virtual Machine),而jre(Java Runtime Environment,中 ...
- [LeetCode] Letter Combinations of a Phone Number
Given a digit string, return all possible letter combinations that the number could represent. A map ...
- ASP.NET 自定义URL重写 分类: ASP.NET 2014-10-31 16:05 175人阅读 评论(0) 收藏
一.功能说明: 可以解决类似 http://****/news 情形,Url路径支持正则匹配. 二.操作步骤: 1.增加URL重写模块: using System; using System.IO; ...
- 豆瓣的账号登录及api操作
.douban.php <?php /** * PHP Library for douban.com * * @author */ class doubanPHP { function __co ...
- BPEL是个什么东东
研究团队有个做智能服务组合的,其中用到叫BPEL的东西,因为全称是Business Process Execution Language,译成中文就是商业执行过程语言,这个东东的是整合SOA的一个执行 ...
- input按钮上传按钮样式
主要是定位和不透明度来实现: <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- Chage
For many times,i've given my own a new lifestyle,such as don't stay up late,have breakfast......whil ...