hdu 1232
来源:互联网 发布:免root长截屏软件 编辑:程序博客网 时间:2024/05/20 10:23
并查集问题:
(2,4) {2,4}
(5,7) {2,4} {5,7}
(1,3) {1,3} {2,4} {5,7}
(8,9) {1,3} {2,4} {5,7} {8,9}
(1,2) {1,2,3,4} {5,7} {8,9}
(5,6) {1,2,3,4} {5,6,7} {8,9}
(2,3) {1,2,3,4} {5,6,7} {8,9}
father[x]为x的父亲,即一个集合的最久远的祖先
1.查找某个元素的
int find(int x){while(father[x]!=x){//father[x]=find(father[x]);x=father[x];}return father[x];}
2.合并两个集合
即将其中一个的最久远的祖先指向另一个最久远的祖先
3.判断两个元素是否在一个集合里
即两个元素的最久远的祖先是否为同一个
代码:
#include <stdio.h>int father[1005];int n,m,a,b;int find(int x){while(father[x]!=x){//father[x]=find(father[x]);x=father[x];}return father[x];}int main(){int i,j;while(scanf("%d %d",&n,&m)==2 && n){for(i=1;i<=n;i++)father[i]=i;for(i=1;i<=m;i++){scanf("%d %d",&a,&b);a=find(a);b=find(b);father[a]=b;}j=0;for(i=1;i<=n;i++){if(father[i]==i)j++;}printf("%d\n",j-1);}return 0;}
- 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
- HDU 1232
- hdu 1232
- 详解C++的预处理器
- SQL with(nolock)详解
- Java开发1200例第50例:纹理填充特效(源码)
- Linux 操作系统架构简介
- Thread和Runnable实现多线程的区别终极剖析!
- hdu 1232
- linux网卡驱动分析之驱动加载
- 电驴大全为什么下载不了的原因,以及其他下载资源的网站
- MySql 忘记密码找回,修改密码
- 2013-03-07:编写一个JAVA程序,用户用键盘只能输入整数,程序输出这些整数的乘积
- 代码戒律:Objective-C最佳实践
- 信号(上)
- linux下ssh远程登录/scp远程复制文件/rsync远程同步命令的自动登录
- ubuntu安装Oracle 11g XE在Configure时的罕见问题?