POJ-1213 How Many Tables (并查集模板题)
2017-01-13 16:47
309 查看
点击查看原题
题目大意:一堆人开派对,只有认识的人才能坐一桌,问至少要几桌
并查集把认识的人链接起来,然后查找父亲一共有几个输出就是需要的桌子数量
AC代码
题目大意:一堆人开派对,只有认识的人才能坐一桌,问至少要几桌
并查集把认识的人链接起来,然后查找父亲一共有几个输出就是需要的桌子数量
AC代码
#include<stdio.h> #include<map> #include<string.h> using namespace std; int father[10000]; int rank1[10000]; void init(int n) { for(int i=0;i<=n;i++) { father[i]=i; rank1[i]=0; } } int find(int a) { return a==father[a]?a:find(father[a]); } bool unite(int a,int b) { a=find(a); b=find(b); if(a==b) return false; if(rank1[a]<rank1[b]) { father[a]=b; } else { father[b]=a; if(rank1[a]==rank1[b]) { rank1[a]++; } } } map<int,int>q; int main() { int T; scanf("%d",&T); while(T--) { q.clear(); int n,m; scanf("%d%d",&n,&m); init(n); for(int i=0;i<m;i++) { int a,b; scanf("%d%d",&a,&b); unite(a,b); } int ans=0; for(int i=1;i<=n;i++) { if(!q[find(i)]) { ans++; q[find(i)]=1; } } printf("%d\n",ans); } }
相关文章推荐
- 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(并查集模板题)
- poj 1213 How Many Tables 并查集水题
- HDU 1213 How Many Tables(并查集模板)
- hdoj 1213 How Many Tables 并查集模板
- POJ-1213 How Many Tables( 并查集 )
- HDU 1213 How Many Tables(并查集模板)
- hdu 1213 (How Many Tables)(简单的并查集,纯模板)
- hdu 1213 How Many Tables 并查集模板题+路径压缩
- 【HDOJ1213】How Many Tables[并查集模板题]
- Hud 1213 How Many Tables[简单并查集]
- HD-1213-How Many Tables(并查集)
- HDOJ 1213 how many tables (并查集)
- HDU 1213 How Many Tables(简单并查集)
- D - How Many Tables 【hdu 1213 并查集】
- HDU:1213 How Many Tables(简单并查集)