并查集的实现
来源:互联网 发布:淘宝店怎么做百度推广 编辑:程序博客网 时间:2024/04/30 17:53
并查集用于解决元素集合中,元素关系的集合的问题。例如给出两两关系,最后看整个集合中,谁是一伙的,有关系的。
//// union_find.c// calc//// Created by lixia on 16/2/28.// Copyright © 2016年 qll. All rights reserved.//#include <stdio.h>int n,m,pre[1000];int find(int x){ // find leader int r = x; while( pre[r] > 0 ) r = pre[r]; int i = x, j; // comp while ( i != r ) { j = pre[i]; pre[i] = r; i = j; } return r;}void unionset(int n, int m){ int fx = find(n); int fy = find(m); pre[fx] = fy; }void test(int argc, const char*argv[]){ printf("n="); while (scanf("%d",&n),n) { printf("\nm="); scanf("%d",&m); for (int i = 0; i < n; i++) { pre[i] = -1; } int x, y; for (int j = 0; j < m; j++) { printf("x y"); scanf("%d %d", &x, &y); unionset(x, y); } int count = 0; for (int g = 0; g < n; g++) { if (pre[g]>0 && pre[pre[g]]==-1) { count++; pre[pre[g]] = -2; } } for (int k = 0; k < n; k++) { for (int l=0; l < n; l++) { if ((k==find(l) && pre[k]<0 && k!=l) || (k==l&&pre[l]==-2)) { printf("%d ",l); } } printf("\n"); } printf("group =%d", count); }}
0 0
- 并查集的实现
- 并查集的实现
- 并查集的实现
- 并查集的实现
- 并查集的实现
- 并查集的实现
- 并查集的实现
- 并查集的实现
- 查并集的实现
- 并查集的实现
- 并查集实现
- 并查集实现
- 并查集的两种实现
- 并查集的树实现
- Kruskal算法的并查集实现
- 并查集的介绍及实现
- hdu1272并查集的实现
- 并查集的实现c
- 基于Django的独立运行脚本开发
- iOS多线程GCD
- Android ViewPager 小圆点指示器
- 对于MagicalRecord的拙见
- bzoj3926 诸神眷顾的幻想乡 后缀自动机
- 并查集的实现
- 求两个有序数组的中位数
- java中的注解
- 分支预测
- Android 获取验证码后的倒计时功能
- Android - LearnActivity
- MVC,MVP 和 MVVM 的图示
- JSP中页面向Action传递参数的几种方式
- UVa 11732 strcmp函数 trie树 左儿子右兄弟表示法