畅通工程

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

Input

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

Output

对每个测试用例,在1行里输出最少还需要建设的道路数目。

Sample Input

4 2
1 3
4 3
3 3
1 2
1 3
2 3
5 2
1 2
3 5
999 0
0

Sample Output

1
0
2
998

解题思路与UVA 10583 - Ubiquitous Religions类似,在10583 判断出最终有多少个集合的基础上减1,就是需要修建的路总数。

#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
const int N = 1000;
int fa[N], deep[N];void init()
{memset(fa, -1, sizeof(fa));memset(deep, 0, sizeof(deep));
}int find(int x)
{if (fa[x] == -1) return x;return fa[x] = find(fa[x]);
}void unite(int x, int y)
{x = find(x), y = find(y);if (x == y) return;if (deep[x]<deep[y])fa[x] = y;else{fa[y] = x;if (deep[x] == deep[y])deep[x]++;}
}bool same(int x, int y)
{return find(x) == find(y);
}int main()
{int n, m; //n个城镇 m条路int x, y; //城镇x 城镇yint fx, fy;//城镇x y的父节点while (cin >> n >> m&&n != 0) {init();//初始化while (m--) {cin >> x >> y;fx = find(x);fy = find(y);if (fx != fy){unite(fx, fy);n--;//集合数-1}}n--;//最后的总集合数-1就是需要修建的路if (m==0) //如果m=0 则需要修建n-1条路{n -= n;cout << n << endl;}else cout << n << endl;}return 0;
}

转载于:https://www.cnblogs.com/aizc/p/7576274.html

HDU 1232 - 畅通工程相关推荐

  1. HDU 1232畅通工程

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

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

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

  3. hdu 1232 畅通工程

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

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

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

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

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

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

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

  7. 并查集 HDOJ 1232 畅通工程

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

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

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

  9. 杭电1232 畅通工程

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

最新文章

  1. 报名 | “AI Time”系列论道知识图谱:知识赋能智能与智能产生知识
  2. Redis-Session无状态会话技术
  3. 天地图专题一:加载天地图
  4. Druid:数据库连接池实现技术 1
  5. Linux创建用户、用户组 及 删除
  6. nginx 负载均衡 最初级版本
  7. Navicat的使用,连表查询,python代码操作sql语句
  8. scrollview滑动到某区域执行某种方法
  9. android动画实现单摆效果
  10. mac ae 汉化
  11. spring cloud bus
  12. 相机标定和双目相机标定标定原理推导及效果展示
  13. 直流马达驱动_ADC_PWM加减速(STM32F4 CubeMX)
  14. webshell后门检测原理
  15. 教你在一分钟之内,将100页Word转换为PPT,简直太厉害了
  16. Vue入门:(v-for v-model)
  17. websocketpp wss
  18. 写一个WFP驱动,拦截网络
  19. ACM-ICPC 2018 南京赛区网络预赛 J AC Challenge (状压dp)
  20. OpenGL/OpenGL ES入门:渲染YUV数据实践

热门文章

  1. Spring学习总结一
  2. ModbusPoll及ModbusSlave安装及使用指南
  3. 使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析
  4. PyTorch基础(七)----- torch.nn.AdaptiveAvgPool2d()方法
  5. S5PV210开发 -- 通过 DNW、fastboot 烧写
  6. 【译】Understanding Batch Normalization with Examples in Numpy and Tensorflow with Interactive Code
  7. Android开源框架源码鉴赏:Fresco
  8. 全面解析多种区块链隐私保护解决方案
  9. Hyperledger Fabric 1.0 实例简析 第一课 network_setup.sh分析
  10. JZOJ 3852. 【NOIP2014八校联考第2场第2试9.28】单词接龙(words)