kuangbin专题五 并查集 POJ 1213 How Many Tables
2017-12-10 19:23
323 查看
题意:
一个人生日,他决定叫他的朋友们来他家开派对,但是这些朋友当中有的不认识彼此,有的认识彼此,朋友们都希望与直接认识的人坐在同一桌,所以要你写个程序出来找到最小需要的桌子数。
题解:
基础并查集。
一个人生日,他决定叫他的朋友们来他家开派对,但是这些朋友当中有的不认识彼此,有的认识彼此,朋友们都希望与直接认识的人坐在同一桌,所以要你写个程序出来找到最小需要的桌子数。
题解:
基础并查集。
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int MAXN=1e3+7; int f[MAXN]; int size[MAXN]; void init() { for(int i=1;i<=1e3;i++) f[i]=i,size[i]=i; } int find(int p) { while(p!=f[p]) { f[p]=f[f[p]]; p=f[p]; } return p; } void Union(int p,int q) { int P=find(p); int Q=find(q); if(q==p) return ; if(size[P]>=size[Q]) { size[P]+=size[Q]; f[Q]=P; } else { size[Q]+=size[P]; f[P]=Q; } } int main() { int n,m,t; scanf("%d",&t); while(t--) { init(); scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ int u,v; scanf("%d%d",&u,&v); Union(u,v); } int sum=0; for(int i=1;i<=n;i++) if(f[i]==i) sum++; printf("%d\n",sum); } }
相关文章推荐
- kuangbin专题五:C - How Many Tables HDU - 1213
- How Many Tables HDU - 1213 并查集
- kuangbin专题五 并查集 POJ3038 How Many Answers Are Wrong
- 【hdu 1213 基础并查集】How Many Tables
- How Many Tables HDU 1213(并查集)
- 并查集之求连通块的数量 HDU - 1213 How Many Tables
- 【并查集】 HDU 1213 How Many Tables
- POJ-2236-Wireless Network 和 HDU-1213-How Many Tables
- ACM 数据结构-并查集 HDU 1213 How Many Tables
- 【并查集】HDU 1213 How Many Tables
- kuangbin专题五: D - How Many Answers Are Wrong HDU - 3038 (带权并查集)
- hdu 3038D - How Many Answers Are Wrong [kuangbin带你飞]专题五 并查集
- How Many Tables HDU - 1213 (并查集)
- How Many Tables HDU - 1213 (简单并查集)
- 杭电 1213 How Many Tables
- HUD1213 How Many Tables
- HDOJ 1213 How Many Tables
- How Many Tables 并查集(求有几个集合)
- hdoj-1213-How Many Tables
- HDU 1213 How Many Tables