hdu2818(带权并查集)
Posted yijiull
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu2818(带权并查集)相关的知识,希望对你有一定的参考价值。
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2818
还是不熟练。。。
1 #include<cstdio> 2 #include<cstring> 3 const int maxn=30005; 4 int f[maxn],under[maxn],sum[maxn]; 5 6 void init() 7 { 8 for(int i=0;i<=maxn;i++) 9 { 10 f[i]=i; 11 sum[i]=1; 12 under[i]=0; 13 } 14 } 15 16 int gf(int x) 17 { 18 if(x!=f[x]) 19 { 20 int t=f[x]; 21 f[x]=gf(t); 22 under[x]+=under[t]; 23 } 24 return f[x]; 25 26 } 27 28 void uni(int a,int b) 29 { 30 int pa=gf(a); 31 int pb=gf(b); 32 if(pa!=pb) 33 { 34 under[pa]=sum[pb]; 35 sum[pb]+=sum[pa]; 36 f[pa]=pb; 37 } 38 } 39 40 int main() 41 { 42 char c[5]; 43 int n,x,y; 44 while(scanf("%d",&n)!=EOF) 45 { 46 init(); 47 for(int i=0;i<n;i++) 48 { 49 scanf("%s",c); 50 if(c[0]==‘M‘) 51 { 52 scanf("%d%d",&x,&y); 53 uni(x,y); 54 } 55 else 56 { 57 scanf("%d",&x); 58 gf(x); 59 printf("%d\n",under[x]); 60 } 61 } 62 } 63 return 0; 64 }
以上是关于hdu2818(带权并查集)的主要内容,如果未能解决你的问题,请参考以下文章
HDU - 3038 / 3048 (带权并查集) (待补)