畅通工程

时间限制:2000 ms  |  内存限制:65535 KB
难度:3
描述
某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?

输入
测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。为简单起见,城镇从1到N编号。 
注意:两个城市之间可以有多条道路相通,也就是说
3 3
1 2
1 2
2 1
这种输入也是合法的
当N为0时,输入结束,该用例不被处理。
输出
对每个测试用例,在1行里输出最少还需要建设的道路数目。
样例输入
4 2
1 3
4 3
3 3
1 2
1 3
2 3
5 2
1 2
3 5
999 0
0
样例输出
1
0
2
998
上传者
ACM_刘德强

#include<stdio.h>
int father[1005];
int find(int n)
{return father[n]==n?father[n]:find(father[n]);
}
int main()
{int n,m;while(~scanf("%d",&n)&&n){scanf("%d",&m);for(int i=1;i<=n;i++)father[i]=i;for(int i=0;i<m;i++){int a,b;scanf("%d%d",&a,&b);int fx=find(a);int fy=find(b);if(fx!=fy){father[fx]=fy;}}int cnt=-1;for(int i=1;i<=n;i++)if(father[i]==i)cnt++;printf("%d\n",cnt);}return 0;
}

筹建工程

时间限制:1000 ms  |  内存限制:65535 KB
难度:3

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

输入
测试输入包含若干测试用例。第一行一个整数 T (T <= 5) 表示测试用例数量,每个测
试用例的第 1 行给出评估的道路条数 N、村庄数目 M ( 1 <= M < 100,0 <= N <= M *( M-1) /2),随后的 N 行对应村庄间道路的成本,每行给出三个正整数,依次是两个村庄的编号(每对村庄至多出现一次),以及此两村庄间道路的成本( 也是正整数 )。
为简单起见,村庄从 1 到 M 编号。
输出
对每个测试用例,在 1 行里输出全省畅通需要的最低成本。若统计数据不足以保证畅通,则输出 No solution。
样例输入
2
3 3
1 2 1
1 3 2
2 3 4
1 3
2 3 2
样例输出
3
No solution
来源
山东大学 ACM/ICPC 校赛高年级组试题 2012
上传者
ACM_李如兵
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
using namespace std;
int f[110];
struct load
{int a,b,w;
}p[110];
int cmp(load s1,load s2)
{return s1.w<s2.w;
}
int find(int x)
{return f[x]==x?x:find(f[x]);
}
int kruskal(int n,int m)//n point m way
{int sum=0;int i;for(i=1;i<=n;i++){f[i]=i;}sort(p,p+m,cmp);for(i=0;i<m;i++){int x=find(p[i].a);int y=find(p[i].b);if(x!=y) {sum+=p[i].w;f[x]=y;}}return sum;
}
int main()
{int t;cin>>t;while(t--){int n,m;cin>>n>>m;for(int i=0;i<n;i++){cin>>p[i].a>>p[i].b>>p[i].w;}if(n<m-1) {printf("No solution\n");continue;}int ring=0;for(int i=1;i<=m;i++) f[i]=i;for(int i=0;i<n;i++){int x=find(p[i].a);int y=find(p[i].b);if(x!=y){f[x]=y;}}for(int i=1;i<=m;i++){if(f[i]==i)ring++;}if(ring>1){printf("No solution\n");}else{printf("%d\n",kruskal(m,n));}}
}

NYOJ 608 508筹划工程 HDU 1232 畅通工程相关推荐

  1. HDU 1232畅通工程

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

  2. HDU 1232 - 畅通工程

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

  3. [ACM] hdu 1232 畅通工程(并查集)

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

  4. hdu 1232 畅通工程

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

  5. HDU - 1232 畅通工程 【连通块】

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

  6. HDU 1232 -畅通工程(并查集)

    题目 http://acm.hdu.edu.cn/showproblem.php?pid=1232 代码 #include <iostream> #include <algorith ...

  7. hdu 1232 畅通工程 最小生成树 并查集

    1232的连接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 #include <iostream>#include <cstdio& ...

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

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

  9. 并查集 HDOJ 1232 畅通工程

    题目传送门 1 /* 2 并查集(Union-Find)裸题 3 并查集三个函数:初始化Init,寻找根节点Find,连通Union 4 考察:连通边数问题 5 */ 6 #include <c ...

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

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

最新文章

  1. SAP HUM 使用HU02去Unpack一个HU
  2. C#中的“收益率突破”是什么?
  3. [***]HZOJ 优美序列
  4. MVC系列-6.注册页面
  5. spi 协议驱动设计
  6. junit与spring-data-redis 版本对应成功的
  7. Smobiler 4.4 更新预告 Part 1(Smobiler能让你在Visual Studio上开发APP)
  8. 字符串混淆技术应用 设计一个字符串混淆程序 可混淆.NET程序集中的字符串
  9. Mendix:云原生应用是软件的未来
  10. mysql中的生日应该是什么类型_MySQL中的定点数类型
  11. 【python】set集合基础与使用
  12. 华为鸿蒙系统学习笔记10-华为鸿蒙 OS 2.0 发布,源代码现已开放
  13. 【转】矩阵十大经典题目
  14. .NET Timer控件
  15. 函数最值题目及答案_高考数学攻克压轴题:圆锥曲线取值范围和最值问题解题模型...
  16. Ubuntu18.04安装网络调试助手 NetAssist
  17. steam密码查看_如何查看和清除Steam中的先前别名
  18. python中if else语句用法_Python条件语句详解:if、else、switch都有了
  19. 「AI」一文看懂“声纹识别VPR”
  20. Win10 wifi、蓝牙打不开

热门文章

  1. windows 2003 server IIS权限设置
  2. 可变序列和不可变序列——python小练
  3. 云在服务器上装系统,怎么在云服务器上安装系统
  4. 今日头条极速版自动脚本_开卷有益——②今日头条极速版
  5. 吉林大学计算机学院刘,刘华虓-吉林大学计算机科学与技术学院
  6. 恒生电子offer含金量_收获8个Offer,来给大家分享备战和面试经验
  7. idea重写接口没有@override_1.重载和重写的区别
  8. RecyclerView 内item点击失效
  9. 枚举 函数 c语言,在C语言中函数中使用枚举类型和结构
  10. 花里胡哨的c语言程序,通达信花里胡哨主图公式源码