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);
}
}

最新文章

  1. C# random helper class
  2. &lt;&lt;&lt; java如何调用系统程序
  3. Python_Day11_同步IO和异步IO
  4. [PHP] 使用Socket提供Http服务
  5. Opengl的gl_NormalMatrix【转】
  6. iOS FMDB小试了一下
  7. python 函数对象(函数式编程 lambda、map、filter、reduce)、闭包(closure)
  8. 字符串转与ASCII码之间的互换
  9. ASP.NET 常识
  10. linux中段错误的处理
  11. 【Codeforces Round 418】An impassioned circulation of affection DP
  12. 老男孩Python全栈学习 S9 日常作业 001
  13. Operating Systems (COMP2006)
  14. centos7安装zabbix server
  15. Java 获取当前系统的时间
  16. 【转】JAVA反射与注解
  17. 利用Sharding-Jdbc实现分表[z]
  18. python nltk 安装及配置说明
  19. &lt;Android 应用 之路&gt; JuheNews For aNdroid (改进版)
  20. R语言 vegan包计算物种累计曲线

热门文章

  1. U盘在电脑上安装CentOS 7 系统过程详解
  2. windows2003下svn的安装
  3. [Swift通天遁地]四、网络和线程-(12)使用ReachabilitySwift实现对网络状态的检测
  4. Java 编译与反编译
  5. RHEL6.5 设置yum,IP地址,解压缩
  6. ACM_水题你要信了(修改版)
  7. 参加2016华为codecraft编程精英挑战赛后感
  8. 未能加载文件或程序集Microsoft.SharePoint.Sandbox.dll
  9. java 多线程并发系列之 生产者消费者模式的两种实现
  10. 软件架构自学笔记-- 转载“虎牙在全球 DNS 秒级生效上的实践”