ACM: 还是畅通工程-并查集-最小生成树-解题报
还是畅通工程
Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 Input
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < );随后的N(N-)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
当N为0时,输入结束,该用例不被处理。 Output
对每个测试用例,在1行里输出最小的公路总长度。 Sample Input Sample Output Hint
Hint Huge input, scanf is recommended.
练习题。。。
AC代码:
#include"iostream"
#include"cstdio"
#include"algorithm"
#include"cmath"
#include"cstring"
using namespace std; int pe[200];
struct node {
int a,b,m;
} vill[10000]; int find(int x) {
return pe[x]==x?x:(pe[x]=find(pe[x]));
} bool cmpm(node a,node b) {
return a.m<b.m;
} int main() {
int n,m,num;
long long tot;
while(~scanf("%d",&n)) {
if(!n)break;
tot=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",&vill[i].a,&vill[i].b,&vill[i].m);
}
sort(vill,vill+nn,cmpm);
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;
tot+=vill[i].m;
num--; //孤立的村庄的个数。
if(num==0)break;
}
}
printf("%I64d\n",tot);
}
return 0;
}
ACM: 还是畅通工程-并查集-最小生成树-解题报的更多相关文章
- ACM: 继续畅通工程-并查集-最小生成树-解题报告
继续畅通工程 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Descri ...
- 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 ...
- ACM: meixiuxiu学图论-并查集-最小生成树-解题报告
/* 最小生成树,最小环的最大权值按照排序后去构建最小生成树就可以了,注意遇到的第一个根相同的点就记录权值,跳出,生成的环就是最小权值环. */ //AC代码: #include"iostr ...
- 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 某省调查城镇交通状况,得到现有城镇道路统计表, ...
随机推荐
- 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))
sdut 2140 图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 给定一个有向图 ...
- SQLAlchemy ORM之建表与查询
作了最基本的操作,找找感觉.. #coding=utf-8 from datetime import datetime from sqlalchemy import (MetaData, Table, ...
- 《图形学》实验三:DDA算法画直线
开发环境: VC++6.0,OpenGL 实验内容: 使用DDA算法画直线. 实验结果: 代码: #include <gl/glut.h> #include <math.h> ...
- Freemarker使用入门
一.概述: FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 Template + data_model = output FreeMarker也是与Web容 ...
- PMP 第二章 项目生命周期与组织
1 项目组织机构类型有哪些? 区别是什么? 职能型 矩阵型 项目性 2 什么是事业环境因素? 什么是组织过程资产? 如何区分事业环境因素和组织过程资产? 事业环境因素:事业环境因素指围绕项目或能影 ...
- Eclipse查看JDK源码
设置 点 "window"-> "Preferences" -> "Java" -> "Installed JR ...
- matlab练习程序(简单多边形的核)
还是计算几何, 多边形的核可以这样理解:这个核为原多边形内部的一个多边形,站在这个叫核的多边形中,我们能看到原多边形的任何一个位置. 算法步骤如下: 1.根据原多边形最大和最小的x,y初始化核多边形, ...
- 编译原理实习(应用预测分析法LL(1)实现语法分析)
#include<iostream> #include<fstream> #include<iomanip> #include<cstdio> #inc ...
- EditText监听键盘输入
第一步,先在布局中为EditText设置属性 <EditText android:singleLine="true" android:imeOptions="act ...
- Android 弹出对话框Dialog充满屏幕宽度
final View view = LayoutInflater.from(context).inflate(layoutId, null); final Dialog dialog = new Di ...