D. 畅通工程

省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。

 

Input

测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N 
行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时,全部输入结束,相应的结果不要输出。

 

Output

对每个测试用例,在1行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出“?”。

 

Sample Input

3 3
1 2 1
1 3 2
2 3 4
1 3
2 3 2
0 100

Sample Output

3
? 分析:用Kruskal算法
#include <cstdio>
#include <iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int MAXN=;
int p[MAXN];
bool sum[MAXN];
struct node
{
int x,y,l;
}a[];
bool cmp(node a,node b)
{
return a.l<b.l;
}
int Find(int x)
{
return x==p[x]?x:(p[x]=Find(p[x]));
}
int Union(int R1,int R2)
{ int r1=Find(R1);
int r2=Find(R2);
if(r1!=r2)
{
p[r1]=r2;
return ;
}
else return ;
}
int main()
{
int n,m;
int u,v,y,cnt,i; while( scanf("%d%d",&n,&m)&&n)
{
cnt=;
memset(sum,,sizeof(sum));
for(i=;i<=m;i++)
p[i]=i;
for(i=;i<=n;i++)
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].l);
sort(a+,a+n+,cmp);
for(i=;i<=n;i++)
{
if(Union(a[i].x,a[i].y)==)
cnt+=a[i].l;
}
for(i=;i<=m;i++)
{
sum[Find(i)]=true;
}
int k=;
for(i=;i<=m;i++)
{
if(sum[i]==true)
k++;
}
if(k!=)
cout<<'?'<<endl;
else
printf("%d\n",cnt);
}
return ;
}

畅通工程——D的更多相关文章

  1. HDU 1233 还是畅通工程(最小生成树)

    传送门 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. 所有的畅通工程[HDU1232][HDU1874][HDU1875][HDU1879]

    畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissio ...

  3. 畅通工程[HDU1863]

    畅通工程 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissio ...

  4. 还是畅通工程[HDU1233]

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  5. 畅通工程续——E

    E. 畅通工程续 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让 ...

  6. HDU-1233 还是畅通工程

    Problem Description 某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能 ...

  7. HDU - 1232 畅通工程

    Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道 ...

  8. HDU1232 畅通工程 并查集

    畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  9. HDU--1233--还是畅通工程--并查集

    还是畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

随机推荐

  1. 最终解决 mouseenter, mouseleave , mouseout mousehover mousemove等事件的区别?

    在jquery中, html页面的div的显示和隐藏, 修改等的功能, 最终都要由 事件 触发来引用, 不管是键盘事件, 还是鼠标事件... mouseenter和mouseleave是成对对应的, ...

  2. 媒体查询判断ipad和iPhone各版本

    /* 判断ipad */ @media only screen and (min-device-width : 768px) and (max-device-width : 1024px){ /* s ...

  3. 今天在学习NTP时发现了2个网站

    NTP 调整系统时间 一个网站是:http://chrony.tuxfamily.org/doc/1.31/manual.html  这个是专门介绍chrony的,做的很详细. 另外一个是:http: ...

  4. Cufflinks

    Transcriptome assembly and differential expression analysis for RNA-Seq. Cufflinks assembles transcr ...

  5. java程序打包成jar

    1. 建立文件夹:proj,在该文件夹下建立3个子文件夹:lib,src 2. 在lib文件夹中放置依赖的jar包 3. 在src中放置类文件:com.cnjava.demo.Main.java 4. ...

  6. 开源实时日志分析ELK平台部署

    参考帖子: (1)自动化测试Web服务器性能autobench+httperf

  7. linux 服务

    CentOS 7.x设置自定义开机启动,添加自定义系统服务 http://linux.it.net.cn/CentOS/fast/2015/0507/15184.html

  8. 定时刷新之setTimeout(只一次)和setInterval(间隔相同时间)的使用

    setTimeout和setInterval的使用 这两个方法都可以用来实现在一个固定时间段之后去执行JavaScript.不过两者各有各的应用场景. 方 法 实际上,setTimeout和setIn ...

  9. Ruby多行字符串,begin/end语句、注释

    #!/usr/bin/ruby #puts "Hello ,Ruby!"; print <<EOF #多行字符串 以<<开头 紧接着为结束字符串标识声明 并 ...

  10. .Net自带缓存Cache的使用

    对于数据比较大,经常要从数据库拿出来用的,可以考虑使用.Net自带的缓存Cache,简单好用: //向内存中插入一个缓存 System.Web.HttpRuntime.Cache.Insert(&qu ...