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

输入输出格式
输入格式:
每个输入文件包含若干组测试测试数据,每组测试数据的第一行给出两个用空格隔开的正整数,分别是城镇数目N(N<1000)和道路数目M;随后的M行对应M条道路,每行给出一对用空格隔开的正整数,分别是该条道路直接相连的两个城镇的编号。简单起见,城镇从1到N编号。

注意:两个城市间可以有多条道路相通。例如:

3 3 1 2 1 2 2 1 这组数据也是合法的。当N为0时,输入结束。

输出格式:
对于每组数据,对应一行一个整数。表示最少还需要建设的道路数目。

思路:并查集(把所有的村庄看作一个个点,用道路连接起来就成了一棵棵树,最后数一数有多少棵树就行了,要求的道路就是树的数目 - 1)

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
int fa[maxn];
int vis[maxn];
int find(int x) {return x == fa[x] ? x : fa[x] = find(fa[x]);
}int main() {int n, m;int u, v;while(cin >> n && n) {cin >> m;for(int i = 1; i <= n; i++) { //初始化集合与标记 fa[i] = i;vis[i] = 0;}for (int i = 1; i <= m; i++) {cin >> u >> v;fa[find(u)] = find(v); // 合并集合 }int ans = 0;for(int i = 1; i <= n; i++) { //查找一共有多少个集合 find(i);if(vis[fa[i]] == 0) {ans++;vis[fa[i]] = 1;}}cout << ans - 1 << endl; //答案: 一共有多少集合 - 1 }return 0;
}

luogu P1536 村村通相关推荐

  1. [luogu p1536] 村村通

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

  2. [LUOGU] P1536 村村通

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

  3. 洛谷P1536 村村通【并查集】

    题目链接:P1536 村村通 程序说明: n个集合需要用n - 1条线连接起来,因此合并完集合后,循环遍历所有点,记录集合的总数,减一则为正确答案 代码如下: #include <iostrea ...

  4. P1536 村村通(洛谷)

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

  5. 洛谷—— P1536 村村通

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

  6. 洛谷:P1536 村村通

    题目出处 洛谷:P1536 村村通 题目描述 某市调查城镇交通状况,得到现有城镇道路统计表.表中列出了每条道路直接连通的城镇.市政府 "村村通工程" 的目标是使全市任何两个城镇间都 ...

  7. P1536 村村通(并查集)

    村村通 - 洛谷https://www.luogu.com.cn/problem/P1536 #include <iostream> #include <cstdio> #in ...

  8. P1536 村村通 洛谷

    https://www.luogu.org/problem/show?pid=1536 题目描述 某市调查城镇交通状况,得到现有城镇道路统计表.表中列出了每条道路直接连通的城镇.市政府"村村 ...

  9. 洛谷P1536 村村通

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

最新文章

  1. 如果你的云服务商倒闭该怎么办?
  2. C语言 学生宿舍管理系统
  3. 活动延期通知 | 7.31 阿里云 Serverless Developer Meetup 杭州站本周六见!
  4. Maven依赖项的适用范围scope
  5. 确保对象的唯一性——单例模式
  6. Linux部署项目的步骤
  7. (35)FPGA打两拍、打三拍设计(第7天)
  8. No Javascript on this page
  9. php数组排序语言,php数组排序函数有哪些
  10. Hibernate之分页查询
  11. 中国计量大学matlab,计量经济学及matlab.pdf
  12. 谷歌 发布android 8,2017谷歌大会正式发布Android 8.0!
  13. 软考高级信息系统项目管理师好考吗?
  14. 实力认证!Coremail连续9次入围安全牛《中国网络安全行业全景图》
  15. stm32中的“hello world”
  16. flash ActionScript快速入门(全部章节)
  17. win10设置让所有文件夹查看方式都是详细信息
  18. 安全总结(一)--一键彻底关闭Win10自带Windows Defender杀毒软件
  19. python特征提取方法_大师兄的Python机器学习笔记:特征提取
  20. 白鹭egret配合protobufjs的使用

热门文章

  1. kwgt 歌词_这8款Android桌面小部件,能让你的Android好用很多倍
  2. 看书标记【R语言 商务数据分析实战4】
  3. Can't bind to local 8700 for debugger 端口占用
  4. 英语almashite绿琥珀ALMASHITE单词
  5. AS608指纹模块与stm32f103c8t6通信实现指纹识别
  6. 认真推荐几个Python数据分析公众号
  7. fpga如何约束走线_FPGA时序约束的几种方法
  8. 迅雷首席架构师刘智聪:微信小程序的架构与系统设计的几点观感
  9. Unity安卓本地推送
  10. 单片机基础之ADD与ADDC的区别详解