HDU - 1213 How Many Tables (简单并查集)
2014-07-16 20:50
429 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1213
题意:
T组数据, 1~n个数,m对关系,开始每个数一个组,每个组间出现关系边,则合并这两个组,求最后剩余组数
分析:
二维邻接矩阵搜索可以实现,但效率较低,开销较大
直接运用并查集,查找、合并,最后求并查集的根节点数
核心:
代码:
题意:
T组数据, 1~n个数,m对关系,开始每个数一个组,每个组间出现关系边,则合并这两个组,求最后剩余组数
分析:
二维邻接矩阵搜索可以实现,但效率较低,开销较大
直接运用并查集,查找、合并,最后求并查集的根节点数
核心:
int Find(int x) { if(x == parent[x]) return x; else return parent[x] = find(parent[x]); }
代码:
#include <stdio.h> int nt, father[10000]; int find(int x) { if(father[x]!=x) father[x]=find(father[x]); return father[x]; } int main() { //int father[10000]; int t; scanf("%d", &t); while(t--) { int n, m, i, j, x, y, a, b; scanf("%d%d", &n, &m); nt=n; for(i=1; i<=n; i++) { father[i]=i; } for(i=0; i<m; i++) { scanf("%d%d", &x, &y); a=find(x); b=find(y); father[a]=b; if(a!=b) nt--; } printf("%d\n", nt); } return 0; }
相关文章推荐
- hdu 1213 How Many Tables(简单的并查集)
- 杭电 hdu 1213 How Many Tables (并查集,简单题)
- hdu 1213 How Many Tables(UFS 简单并查集)
- HDU 1213 How Many Tables(并查集,简单)
- HDU1213 How Many Tables(简单的并查集)
- hdu 1213 How Many Tables(并查集,简单题)
- HDU:1213 How Many Tables(简单并查集)
- HDU 1213 How Many Tables(简单并查集)
- hdu 1213 (How Many Tables)(简单的并查集,纯模板)
- HDU 1213 How Many Tables? (简单并查集)
- hdu 1213 (How Many Tables)(简单的并查集,纯模板)
- HDU 1213 How Many Tables (简单的并查集)
- hdu 1213 How Many Tables(并查集的简单应用)
- HDU 1213-How Many Tables(简单并查集)
- hdu 1213 How Many Tables(并查集练习)
- HDU-#1213 How Many Tables (并查集)
- HDU-畅通工程-1232(并查集)How Many Tables(1213)
- HDU--1213 -- How Many Tables [水水的并查集]
- HDU 1213 How Many Tables 并查集入门
- Hud 1213 How Many Tables[简单并查集]