【题目描述:】

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

【输入格式:】

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

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

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

【输出格式:】

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





[算法分析:]

其实就是生成树,一开始有的道路加入到生成树里,

最后对\((n-1)\)个点进行枚举,如果没有就加入,一直到边数等于\(n-1\)

统计最后累加的边数就好.





\([Code:]\)

#include<iostream>
#include<cstdio>
using namespace std; const int MAXN = 1000 + 1;
const int MAXM = 500500 + 1; int n, m;
int fa[MAXN]; struct Edge {
int x, y;
}h[MAXM]; int find(int x) {
if(fa[x] != x) fa[x] = find(fa[x]);
return fa[x];
} inline int read() {
int x=0; char ch = getchar();
while(ch<'0' || ch>'9') ch = getchar();
while(ch>='0' && ch<='9')
x=(x<<3)+(x<<1)+ch-48, ch=getchar();
return x;
} int main() {
n = read();
while(n) {
m = read();
for(int i=1; i<=n; ++i) fa[i] = i;
for(int i=1; i<=m; ++i) {
h[i].x = read(), h[i].y = read();
int fx = find(h[i].x), fy = find(h[i].y);
if(fx != fy) fa[fx] = fy;
}
int tot = 0;
for(int i=1; i<n; ++i) {
int fx = find(i), fy = find(i+1);
if(fx != fy) {
fa[fx] = fy;
++tot;
}
if(tot == n-1) break;
}
printf("%d\n", tot);
n = read();
}
}

最新文章

  1. 初学java之12 泛型编程的个人理解总结
  2. EXCEL技巧——SUBTOTAL函数巧妙应用
  3. Sql Server 2008 数据库附加失败提示9004错误解决办法
  4. 在64位的linux上运行32位的程序
  5. POJ3493 Largest Submatrix of All 1’s(单调栈)
  6. JS获取项目根目录
  7. Java提高篇---Stack
  8. freetds相关
  9. SGU 148.B-Station
  10. Eclipse 将projectBuild Path中引用的jar包自己主动复制到WEB-INF下的lib目录下
  11. 并行类加载与OSGI类加载
  12. spring注解:反射与配置
  13. c语言操作符总结
  14. python 读取mysql数据至csv文件中,并发送邮件
  15. sed 简明教程 (转)
  16. sklearn_线性回归
  17. Win7命令终端基础配色指南
  18. ASP 读写文件FSO,adodb.stream
  19. 【坚持】Selenium+Python学习之从读懂代码开始 DAY6
  20. 在CentOS中安装与配置SVN的方法

热门文章

  1. 光流法详解之一(LK光流)
  2. 操作Linux系统环境变量的几种方法
  3. webpack打包去除map文件及其他一些配置
  4. VS2010安装MVC3失败的解决方法
  5. Hadoop小知识点总结1
  6. C-指针,二级指针,二维数组作为函数参数使用,C语言链表(详解)
  7. elasticsearch6.7 01.入门指南(3)
  8. 【Java并发编程】20、DelayQueue实现订单的定时取消
  9. 【Spring】9、Spring中的事件Event
  10. html 字符串 生成 pdf 完美解决中文不显示