cogs 29. 公路建设
29. 公路建设
★ 输入文件:road.in
输出文件:road.out
简单对比
时间限制:1 s 内存限制:128 MB
【问题描述】
A 国是一个新兴的国家,有 N 个城市,分别编号为 1,2.3…N 。政府想大搞公路建设,提供了优惠政策:对于每一个投资方案的预计总费用,政府负担 50% ,并且允许投资的公司对过往的汽车收取连续 5 年的养路费。世界各地的大公司纷纷投资,并提出了自己的建设方案,他们的投资方案包括这些内容:公路连接的两座城市的编号,预计的总费用(假设他们的预计总是准确的)。
你作为 A 国公路规划局的总工程师,有权利决定每一个方案是否接受。但是政府给你的要求是:
( 1 )要保证各个城市之间都有公路直接或间接相连。
( 2 )因为是新兴国家,政府的经济实力还不强。政府希望负担最少的费用。
因为大公司并不是同时提出方案,政府希望每接到一个方案,就可以知道当前需要负担的最小费用和接受的投资方案,以便随时开工。关于你给投资公司的回复可以等到开工以后再给。 注意: A 国一开始是没有公路的。我们设定 A 国的城市数目 N<=500 ,投资的方案总数 M<=2000 。
【输入格式】
输入文件名: road.in
第 1 行有两个数字: N 、 M
第 2 行到第 M+1 行给出了各个投资方案,第 i 行的方案编号为 i-1
编号小的方案先接到,一个方案占一行,每行有 3 个数字,分别是连接的两个城市编号 a 、 b ,和投资的预计总费用 cost 。
【输出格式】
输出文件名: road.out
输出文件共有 M 行。
每一行的第一个数字是当前政府需要负担的最少费用(保留 1 位小数),后面是 X 个数字,表示当前政府接受的方案的编号, 不 要求从小到大排列。但如果此时接受的所有投资方案不能保证政府的第一条要求,那么这一行只有一个数字 0
【输入样例】
输入文件名: road.in
3 5
1 2 4
1 3 4
2 3 4
1 3 2
1 2 2
输出文件名: road.out
0
4.0 1 2
4.0 1 2
3.0 1 4
2.0 4 5
注意:由于没有评测插件,不要求输出方案。
即样例输出:
0
4.0
4.0
3.0
2.0
思路:首先你要读懂题意,然后跑m遍最小生成树。
错因:数组开小了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,tot,num,ans,fa[];
struct nond{
int x,y,z;
}edge[];
int cmp(nond a,nond b){
return a.z<b.z;
}
int find(int x){
if(fa[x]==x) return fa[x];
else return fa[x]=find(fa[x]);
}
int main(){
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++){
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
edge[++tot].x=x;
edge[tot].y=y;
edge[tot].z=z;
num=;ans=;
sort(edge+,edge++tot,cmp);
for(int i=;i<=n;i++) fa[i]=i;
for(int i=;i<=tot;i++){
int dx=find(edge[i].x);
int dy=find(edge[i].y);
if(dx==dy) continue;
fa[dx]=dy;
ans+=edge[i].z;
num++;
if(num==n-) break;
}
if(num<n-) printf("0\n");
else
printf("%.1lf\n",ans*1.0/*1.0);
}
}
最新文章
- C# random helper class
- <;<;<; java如何调用系统程序
- Python_Day11_同步IO和异步IO
- [PHP] 使用Socket提供Http服务
- Opengl的gl_NormalMatrix【转】
- iOS FMDB小试了一下
- python 函数对象(函数式编程 lambda、map、filter、reduce)、闭包(closure)
- 字符串转与ASCII码之间的互换
- ASP.NET 常识
- linux中段错误的处理
- 【Codeforces Round 418】An impassioned circulation of affection DP
- 老男孩Python全栈学习 S9 日常作业 001
- Operating Systems (COMP2006)
- centos7安装zabbix server
- Java 获取当前系统的时间
- 【转】JAVA反射与注解
- 利用Sharding-Jdbc实现分表[z]
- python nltk 安装及配置说明
- <;Android 应用 之路>; JuheNews For aNdroid (改进版)
- R语言 vegan包计算物种累计曲线
热门文章
- U盘在电脑上安装CentOS 7 系统过程详解
- windows2003下svn的安装
- [Swift通天遁地]四、网络和线程-(12)使用ReachabilitySwift实现对网络状态的检测
- Java 编译与反编译
- RHEL6.5 设置yum,IP地址,解压缩
- ACM_水题你要信了(修改版)
- 参加2016华为codecraft编程精英挑战赛后感
- 未能加载文件或程序集Microsoft.SharePoint.Sandbox.dll
- java 多线程并发系列之 生产者消费者模式的两种实现
- 软件架构自学笔记-- 转载“虎牙在全球 DNS 秒级生效上的实践”