版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/lx417147512/article/details/27092583

***************************************转载请注明出处:http://blog.csdn.net/lttree***************************************

继续畅通project

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 12918    Accepted Submission(s): 5587

Problem Description
省政府“畅通project”的目标是使全省不论什么两个村庄间都能够实现公路交通(但不一定有直接的公路相连,仅仅要能间接通过公路可达就可以)。现得到城镇道路统计表,表中列出了随意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编敲代码,计算出全省畅通须要的最低成本。
 

Input
測试输入包括若干測试用例。每一个測试用例的第1行给出村庄数目N ( 1< N < 100 );随后的 N(N-1)/2 行相应村庄间道路的成本及修建状态,每行给4个正整数。各自是两个村庄的编号(从1编号到N)。此两村庄间道路的成本。以及修建状态:1表示已建,0表示未建。

当N为0时输入结束。

 

Output
每一个測试用例的输出占一行,输出全省畅通须要的最低成本。
 

Sample Input

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

Sample Output

3
1
0
 

Author
ZJU
 

Source
 

题目:

pid=1879" rel="nofollow">http://acm.hdu.edu.cn/showproblem.php?pid=1879

继续畅通project,最小生成树(MST)。

不说最小生成树,直接说MST,是不是显得高大上啊~

嘿嘿~~~
这道题,依然是求最小生成树。比起赤裸裸加了几块布。
比方,有些路已经修建了。
已经修建的路就不须要耗费你不论什么东西,所以cost=0
没有告诉你边数有多少。
事实上题目中说了 边数=n*(n-1)/2
剩下的,求MST吧~ 。我用的Kruskal求:
/****************************************
*****************************************
* Author:Tree *
*From :http://blog.csdn.net/lttree *
* Title : 继续畅通project *
*Source: hdu 1879 *
* Hint : 最小生成树(MST-Prim) *
*****************************************
****************************************/ #include <stdio.h>
#include <algorithm>
using namespace std;
struct Road
{
int u,v,c;
}r[10001];
int n,m,father[10001];
bool cmp(Road r1,Road r2)
{
return r1.c<r2.c;
} // 并查集系列函数 1-初始化 2-查找 3-合并
void Init( int n )
{
int i;
for(i=1;i<=n;++i)
father[i]=i;
}
int Find(int m)
{
while( father[m]!=m )
{ m=father[m]; }
return m;
}
void Combine( int a,int b)
{
int temp_a,temp_b;
temp_a=Find(a);
temp_b=Find(b); if( temp_a!=temp_b )
father[temp_a]=temp_b;
} int Kruskal( void )
{
sort(r,r+m,cmp);
Init(n);
Road rd;
int i,res; // 构建最小生成树
res=0;
for( i=0;i<m;++i )
{
rd=r[i];
if( Find(rd.u)!=Find(rd.v) )
{
Combine(rd.u,rd.v);
res+=rd.c;
}
}
return res;
} int main()
{
int i,start,finish,cost,iscon; while( scanf("%d",&n) && n )
{
// 求边的数量
m = n*(n-1)/2;
for( i=0;i<m;++i )
{
scanf("%d%d%d%d",&start,&finish,&cost,&iscon);
r[i].u=start;
r[i].v=finish;
// 假设道路已经修建。消耗设置为0,不须要我们再去建立道路
if( iscon ) r[i].c=0;
else r[i].c=cost;
}
printf("%d\n",Kruskal());
}
return 0;
}

ACM-最小生成树之继续畅通project——hdu1879的更多相关文章

  1. hdu1879 继续畅通project(最小生成树)

    继续畅通project Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  2. HDU1863 畅通project 【最小生成树Prim】

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

  3. HDU 1863 畅通project (最小生成树是否存在)

    题意 中文 入门最小生成树  prim大法好 #include<cstdio> #include<cstring> using namespace std; const int ...

  4. hdu 1233(还是畅通project)(prime算法,克鲁斯卡尔算法)(并查集,最小生成树)

    还是畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  5. 8-06. 畅通project之局部最小花费问题(35)(最小生成树_Prim)(ZJU_PAT)

    题目链接:http://pat.zju.edu.cn/contests/ds/8-06 某地区经过对城镇交通状况的调查.得到现有城镇间高速道路的统计数据,并提出"畅通project" ...

  6. hdu1863 畅通project(判定最小生成树)

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

  7. hdu 1875 畅通project再续(kruskal算法计算最小生成树)

    畅通project再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  8. hdu 1233 还是畅通project(kruskal求最小生成树)

    还是畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  9. hdoj 1875 畅通project再续【最小生成树 kruskal &amp;&amp; prim】

    畅通project再续 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其它的小岛时都要通过划小船来实现. ...

随机推荐

  1. Google Chrome 35 Released – Install on RHEL/CentOS 6 and Fedora 20-15

    Google Chrome is a freeware web browser developed by Google Inc. Google Chrome team proudly announce ...

  2. Nginx:解析HTTP配置的流程

    参考资料:深入理解Nginx(陶辉) 书中有详细的讲解,这里只用本人的理解梳理一下该流程. 一点提议:对于像我这样的新手,面对暂时看不懂章节,建议先往下看一下(可能就会有新的理解或灵感),而不要死磕在 ...

  3. 机房收费系统合作版(二)——初识Git

    研究了一天半的Git.查阅了不少资料,这里将Git的运用分为两条线做个简单梳理:本地控制库.远程控制库. **************************************本地控制库**** ...

  4. 64位windows2003 未在本地计算机上注册 microsoft.jet.oledb.4.0 提供程序

    64位windows2003系统 使用 mdb数据库时候出现如下错误. 可能用office的一些比较旧的程序时候会这样. 未在本地计算机上注册 microsoft.jet.oledb.4.0 提供程序 ...

  5. linux常用命令(个人学习笔记)

    个人说明:学习linux也有半年左右的时间了,从一开始的只会简单的开关机,到现在的熟悉应用一些简单的命令,还是有些进步的,不过对于我这种菜鸟来说,如果不经常用,发现忘的很快.所以就把在学习过程中遇到的 ...

  6. 工作总结 获取html 标签 自定义属性值 根据html 自定义属性 获取 到标签

    FFID    HFID function getElementByAttr(tag, attr, value) { var aElements = document.getElementsByTag ...

  7. sql server 集群配置

    Windows server2003 + sql server2005 集群配置安装 一:环境 软硬件环境 虚拟3台windows server 2003主机.当中一台做域控DC,另外两台作为节点wi ...

  8. iOS tableView高度缓存

    tableView计算完高度后,把高度缓存起来,避免下次重复计算,以减少不必要的消耗 // declare cellHeightsDictionary NSMutableDictionary *cel ...

  9. Winform 动态 画图 不闪

    一.问题:解决winform动态画图闪的问题,网上搜的方法,大部分都是: “this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlSty ...

  10. Android studio 百度地图开发(3)地图导航

    Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...