HDU 1232 畅通工程(求集合个数)
来源:互联网 发布:java中九九乘法表原理 编辑:程序博客网 时间:2024/06/05 16:08
题目地址:点击打开链接
思路:并查集模板
AC代码:
#include<stdio.h>int pre[1000];int find(int x){int r=x,i=x,j;while(pre[r]!=r){r=pre[r];}while(pre[i]!=r)// 四弟告诉三弟咱的老大是谁,然后三弟告诉二弟咱的老大是谁,二弟的老大就是老大就不用告诉了,这是路径压缩{j=pre[i];pre[i]=r;i=j;}return r;}int join(int x,int y){if(find(x)!=find(y))pre[find(y)]=find(x);return 0;}int main(){int n,m,i,x,y,sum;while(scanf("%d%d",&n,&m)&&n){sum=0;for(i=1;i<=n;i++){pre[i]=i;}for(i=0;i<m;i++){scanf("%d%d",&x,&y);join(x,y);}for(i=1;i<=n;i++){if(pre[i]==i)sum++;}printf("%d\n",sum-1);}return 0;}用递归方法求自己的老大也可以int find(int x){int r;r = x;if(pre[r] == r)return r;return(find(pre[r]));}
这个find更简洁
int find(int x){ return x == pre[x] ? x : pre[x] = find(pre[x]);//找老大加路径压缩}
0 0
- HDU 1232 畅通工程(求集合个数)
- hdu1232 畅通工程 (kruskal求生成树个数)
- 畅通工程 (HDU 1232)
- Hdu-1232 畅通工程
- hdu 1232 畅通工程
- hdu 1232 畅通工程
- hdu 1232 畅通工程
- HDU 1232 畅通工程
- hdu 1232 畅通工程
- hdu 1232 畅通工程
- hdu 1232 畅通工程
- hdu 1232 畅通工程
- Hdu 1232 畅通工程
- HDU-1232:畅通工程
- hdu 1232 畅通工程
- hdu 1232 畅通工程
- hdu - 1232 - 畅通工程
- hdu 1232 畅通工程
- Lucene与Solr的比较
- C语言中的转义符'\d', '\n'相关
- U-Boot启动过程--详细版的完全分析
- LAMP漫长编译安装
- xamarin.forms GridSplitter control
- HDU 1232 畅通工程(求集合个数)
- poj(2828)——Buy Tickets(线段树维护点&点更新)
- xamarin.forms 蓝牙
- pat 1027. Colors in Mars (20)
- 黑马程序员----java网络编程基础
- xamarin.forms 后台
- openerp学习笔记 模块结构分析
- Lowest Common Ancestor of a Binary Tree
- lhenilhwpsscgrh