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

Sample 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 )相关推荐

  1. 畅通工程 hdu 1232 HDU - 1863 (并查集+最小生成树)

    畅通工程hdu 1232 并查集 Problem Description Input Output 参考代码 HDU - 1863 Problem Description Input Output 参 ...

  2. 畅通工程 HDU - 1233 

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

  3. 畅通工程 HDU - 1863

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

  4. 【畅通工程 HDU - 1232 】【并查集模板题】

    并查集讲解和模板 有一个博文对此分析的很透彻,附链接 为避免原链接失效,现摘录如下: 为了解释并查集的原理,我将举一个更有爱的例子. 话说江湖上散落着各式各样的大侠,有上千个之多.他们没有什么正当职业 ...

  5. hdu 1879 继续畅通工程 最小生成树

    继续畅通工程                                                                             Time Limit: 2000/ ...

  6. hdu 1879 继续畅通工程 (最小生成树)

    继续畅通工程 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  7. HDU 1879 继续畅通工程 最小生成树

    继续畅通工程 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description ...

  8. HDU - 1879 继续畅通工程 【最小生成树 - 升级】

    Description 省政府"畅通工程"的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).现得到城镇道路统计表,表中列出了任 ...

  9. hdu 1879 继续通畅工程(最小生成树)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1879 /************************************************* ...

  10. HDOJ 1874 HDU 1874 畅通工程续 ACM 1874 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:          http://acm.hdu.edu.cn/showproblem.php?pid=1874 ...

最新文章

  1. [Asp.net mvc]OutputCacheAttribute
  2. Xcode 代码块添加
  3. mysql数据库技术方案,MySql数据库优化方案
  4. 机器学习中val_小波变换(七):小波变换在机器学习中的应用(下)
  5. 297. Serialize and Deserialize Binary Tree
  6. redis 4.0.9 centos7 双机集群安装
  7. [剑指offer]面试题第[54]题[JAVA][二叉搜索树的第k大节点][递归][迭代]
  8. 人工智能在线特征系统中的数据存取技术
  9. 构建企业数字化转型协同力有多难?青云发布workly.ai誓要解决这些棘手的问题!...
  10. iptables实现NAT
  11. 人类再次彻底败给 AI!
  12. 数据从mysql迁移至oracle时知识点记录(一)
  13. shell脚本文件使用教程
  14. 服务总线 开源_UltraESB企业服务总线将开源
  15. 转移操作和占用操作主机
  16. 论文笔记(一)《Intriguing properties of neural networks》
  17. 关于进程,线程,协程,一点心得
  18. 步进电机主要技术参数
  19. STM32模拟USB多点触控屏
  20. Spring创建Bean的流程

热门文章

  1. 豆瓣9.0,35万读者“搜不到信息”的神秘作者,我们帮你找到了
  2. 以朋友圈为例,腾讯资深架构师揭秘鹅厂大数据平台是怎样运营的
  3. 消息队列之事务消息,RocketMQ 和 Kafka是如何做的?
  4. JEECG智能开发平台-项目选型最爱
  5. SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印
  6. Pycharm导入anaconda环境
  7. 大数据之Azkaban部署
  8. 【C#学习笔记】函数调用
  9. 1.1什么是数据仓库
  10. Tensorflow+gpu安装