博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷 P1536 村村通(并查集)
阅读量:6269 次
发布时间:2019-06-22

本文共 1181 字,大约阅读时间需要 3 分钟。

嗯...

 

题目链接:

 

思路:

  这道题可以看出是并查集的思想,然后用一个while嵌套一下,输入一条路的两个端点,就将这两个端点合并,表示这两个地方可以互相到达。然后从1到n for 一遍,如果这个点的父亲和它本身相同(即它并没有与其他任何的点并在一起),就将数量+1,注意现在的ans是点的个数,要修的路的个数即为点的个数减一。

 

AC代码:

1 #include
2 #include
3 #include
4 5 using namespace std; 6 7 int f[100005]; 8 int n, m, x, y; 9 10 inline int find(int x){11 if(x != f[x])12 f[x] = find(f[x]);13 return f[x];14 }//"查 "15 16 int main(){17 while(true){18 int ans = 0;19 scanf("%d", &n);20 if(n == 0)21 return 0;//结束 22 scanf("%d", &m);23 for(int i = 1; i <= n; i++)24 f[i] = i;25 for(int i = 1; i <= m; i++){26 scanf("%d%d", &x, &y);27 int r1 = find(x);28 int r2 = find(y);29 if(r1 != r2){30 f[r1] = r2;31 }//"并" 32 }33 for(int i = 1; i <= n; i++){34 if(find(i) == i){
//没与任何点并在一起 35 ans++;//点的个数 36 }37 }38 printf("%d\n", ans - 1);//要修的路的条数 39 }40 return 0;41 }
AC代码

 

转载于:https://www.cnblogs.com/New-ljx/p/10846625.html

你可能感兴趣的文章
android 打开各种文件(setDataAndType)转:
查看>>
补交:最最原始的第一次作业(当时没有选上课,所以不知道)
查看>>
Vue实例初始化的选项配置对象详解
查看>>
PLM产品技术的发展趋势 来源:e-works 作者:清软英泰 党伟升 罗先海 耿坤瑛
查看>>
vue part3.3 小案例ajax (axios) 及页面异步显示
查看>>
软件测试(二)之 Failure, Error & Fault
查看>>
浅谈MVC3自定义分页
查看>>
.net中ashx文件有什么用?功能有那些,一般用在什么情况下?
查看>>
select、poll、epoll之间的区别总结[整理]【转】
查看>>
CSS基础知识(上)
查看>>
PHP中常见的面试题2(附答案)
查看>>
角色权限分配
查看>>
明小子动力上传拿webshell.zip
查看>>
ES6 Module export与import复合使用
查看>>
第三篇、image 设置圆角的几种方式
查看>>
关于Vs2010 C#使用DirectX的问题
查看>>
EPP(Eclipse PHP)语法高亮仿EditPlus配置
查看>>
OA账号架构权限的问题
查看>>
030——VUE中鼠标语义修饰符
查看>>
python编辑csv
查看>>