继续畅通工程(HDU-1879 )
Problem Description
省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。
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
0Sample Output
3
1
0
思路:最小生成树kruskal算法实现即可,可把已联通的村庄边权设为0再求。
Source Program
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstdlib>
#define INF 999999999
#define N 101
#define MOD 1000000007
#define E 1e-12
using namespace std;
int father[N];
struct node
{int x;int y;int w;
}a[5000];
int Find(int x)
{if(x!=father[x])return father[x]=Find(father[x]);return x;
}
int cmp(const void *x,const void *y)
{return (*(struct node *)x).w-(*(struct node *)y).w;
}
int main()
{int n;while(scanf("%d",&n)!=EOF&&n){int edge=n*(n-1)/2;int num=0;for(int i=1;i<=n;i++)//初始化father[i]=i;int k=0;for(int i=1;i<=edge;i++){int x,y,w,p;scanf("%d%d%d%d",&x,&y,&w,&p);if(p==1){x=Find(x);y=Find(y);if(x!=y){father[x]=y;k++;}}else{a[num].x=x;a[num].y=y;a[num].w=w;num++;}}qsort(a,num,sizeof(a[0]),cmp);int MST=0;for(int i=0;i<num;i++){int x=Find(a[i].x);int y=Find(a[i].y);if(x!=y){father[x]=y;MST+=a[i].w;k++;}if(k==n-1)break;}printf("%d\n",MST);}return 0;
}
继续畅通工程(HDU-1879 )相关推荐
- 畅通工程 hdu 1232 HDU - 1863 (并查集+最小生成树)
畅通工程hdu 1232 并查集 Problem Description Input Output 参考代码 HDU - 1863 Problem Description Input Output 参 ...
- 畅通工程 HDU - 1233
某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离.省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可 ...
- 畅通工程 HDU - 1863
省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道 ...
- 【畅通工程 HDU - 1232 】【并查集模板题】
并查集讲解和模板 有一个博文对此分析的很透彻,附链接 为避免原链接失效,现摘录如下: 为了解释并查集的原理,我将举一个更有爱的例子. 话说江湖上散落着各式各样的大侠,有上千个之多.他们没有什么正当职业 ...
- hdu 1879 继续畅通工程 最小生成树
继续畅通工程 Time Limit: 2000/ ...
- hdu 1879 继续畅通工程 (最小生成树)
继续畅通工程 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU 1879 继续畅通工程 最小生成树
继续畅通工程 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
- HDU - 1879 继续畅通工程 【最小生成树 - 升级】
Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任 ...
- hdu 1879 继续通畅工程(最小生成树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1879 /************************************************* ...
- HDOJ 1874 HDU 1874 畅通工程续 ACM 1874 IN HDU
MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1874 ...
最新文章
- [Asp.net mvc]OutputCacheAttribute
- Xcode 代码块添加
- mysql数据库技术方案,MySql数据库优化方案
- 机器学习中val_小波变换(七):小波变换在机器学习中的应用(下)
- 297. Serialize and Deserialize Binary Tree
- redis 4.0.9 centos7 双机集群安装
- [剑指offer]面试题第[54]题[JAVA][二叉搜索树的第k大节点][递归][迭代]
- 人工智能在线特征系统中的数据存取技术
- 构建企业数字化转型协同力有多难?青云发布workly.ai誓要解决这些棘手的问题!...
- iptables实现NAT
- 人类再次彻底败给 AI!
- 数据从mysql迁移至oracle时知识点记录(一)
- shell脚本文件使用教程
- 服务总线 开源_UltraESB企业服务总线将开源
- 转移操作和占用操作主机
- 论文笔记(一)《Intriguing properties of neural networks》
- 关于进程,线程,协程,一点心得
- 步进电机主要技术参数
- STM32模拟USB多点触控屏
- Spring创建Bean的流程