poj1962(带权并查集)

Posted yijiull

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj1962(带权并查集)相关的知识,希望对你有一定的参考价值。

题目连接:http://poj.org/problem?id=1962

都是套路。。。

 1 #include<cstdio>
 2 #include<cstring>
 3 const int maxn=20010;
 4 const int mod=1000;
 5 int n;
 6 int f[maxn],r[maxn];
 7 
 8 void init()
 9 {
10     for(int i=0;i<=n;i++)
11     {
12         f[i]=i;
13         r[i]=0;
14     }
15 }
16 
17 int gf(int x)
18 {
19     if(x!=f[x])
20     {
21         int t=f[x];
22         f[x]=gf(t);
23         r[x]+=r[t];
24     }
25     return f[x];
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         f[pa]=pb;
35         int x=(a-b)>=0?a-b:b-a;
36         r[pa]=r[b]-r[a]+x%mod;
37     }
38     return ;
39 }
40 
41 int main()
42 {
43     int t;
44     scanf("%d",&t);
45     while(t--)
46     {
47         scanf("%d",&n);
48         int x,y;
49         init();
50         char s[5];
51         while(scanf("%s",s))
52         {
53             if(s[0]==O) break;  //看成以0结束,无限tle
54             if(s[0]==E)
55             {
56                 scanf("%d",&x);
57                 gf(x);
58                 printf("%d\n",r[x]);
59             }
60             if(s[0]==I)
61             {
62                 scanf("%d%d",&x,&y);
63                 uni(x,y);
64             }
65         }
66     }
67 }

 

以上是关于poj1962(带权并查集)的主要内容,如果未能解决你的问题,请参考以下文章

POJ 1988 Cube Stacking (带权并查集)

poj1182(带权并查集)

poj1182 带权并查集

POJ 1988 Cube Stacking 带权并查集

poj2492A Bug's Life——带权并查集

带权并查集(含种类并查集)经典模板 例题:①POJ 1182 食物链(经典)②HDU - 1829 A bug's life(简单) ③hihoCoder 1515 : 分数调查(示例代码(代