题目链接:https://www.luogu.org/problemnew/show/P1196

思路:

带权并查集。对每个结点,构造表示该结点的头结点,该结点距头结点的距离,该列的大小3个数组。

在合并过程中,要维护每个结点的权值,将x所在列的头结点接到y所在列的尾部,并修改xx距新头结点的距离,然后修改列的大小。

在查询过程中,也要维护每个结点的权值,计算两个结点的差值即可得到结果。

代码如下:

 #include<bits/stdc++.h>
using namespace std; int t;
int f[],l[],s[]; int get(int k){
if(f[k]==k) return k;
else{
int tmp=f[k];
f[k]=get(f[k]);
l[k]+=l[tmp];
s[k]=s[f[k]];
return f[k];
}
} int main(){
scanf("%d",&t);
for(int i=;i<=;i++)
f[i]=i,l[i]=,s[i]=;
char m;
int x,y;
while(t--){
scanf(" %c",&m);
scanf("%d%d",&x,&y);
int xx,yy;
if(m=='M'){
xx=get(x);
yy=get(y);
f[xx]=yy;
l[xx]=s[yy];
s[xx]+=s[yy];
s[yy]=s[xx];
}
else{
xx=get(x);
yy=get(y);
if(xx!=yy)
printf("-1\n");
else
printf("%d\n",abs(l[x]-l[y])-);
}
}
return ;
}

luoguP1196(带权并查集)的更多相关文章

  1. POJ 1703 Find them, Catch them(带权并查集)

    传送门 Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 42463   Accep ...

  2. [NOIP摸你赛]Hzwer的陨石(带权并查集)

    题目描述: 经过不懈的努力,Hzwer召唤了很多陨石.已知Hzwer的地图上共有n个区域,且一开始的时候第i个陨石掉在了第i个区域.有电力喷射背包的ndsf很自豪,他认为搬陨石很容易,所以他将一些区域 ...

  3. poj1417 带权并查集 + 背包 + 记录路径

    True Liars Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2713   Accepted: 868 Descrip ...

  4. poj1984 带权并查集(向量处理)

    Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 5939   Accepted: 2 ...

  5. 【BZOJ-4690】Never Wait For Weights 带权并查集

    4690: Never Wait for Weights Time Limit: 15 Sec  Memory Limit: 256 MBSubmit: 88  Solved: 41[Submit][ ...

  6. hdu3038(带权并查集)

    题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=3038 题意: n表示有一个长度为n的数组, 接下来有m行形如x, y, d的输入, 表示 ...

  7. 洛谷OJ P1196 银河英雄传说(带权并查集)

    题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦 创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山 ...

  8. poj1984 带权并查集

    题意:有多个点,在平面上位于坐标点上,给出一些关系,表示某个点在某个点的正东/西/南/北方向多少距离,然后给出一系列询问,表示在第几个关系给出后询问某两点的曼哈顿距离,或者未知则输出-1. 只要在元素 ...

  9. poj1611 带权并查集

    题意:病毒蔓延,现在有 n 个人,其中 0 号被认为可能感染,然后给出多个社交圈,如果某个社交圈里有人被认为可能被感染,那么所有这个社交圈里的人都被认为可能被感染,现在问有多少人可能被感染. 带权并查 ...

随机推荐

  1. Linux下apache2及模块mod_deflate等安装和配置

    安装apache 1.wget http://archive.apache.org/dist/httpd/httpd-2.2.13.tar.gz 2.在安装目录 先让大家看看实际效果,请看下图10点中 ...

  2. JVM内部细节之二:偏向锁(Biased Locking)

    在前面一片文章<JVM内部细节之一:synchronized关键字及实现细节>中已经提到过偏向锁的概念,在理解什么是偏向锁前必须先理解什么是轻量级锁(Lightweight Locking ...

  3. solr查询空值、null、不存在的字段的方法

    正常情况下我们都是按有值的方式去搜索,但是有时候有一些字段为null,solr中就没有存储进去,我们怎么获取这个字段不存在为条件的搜索结果了,我们只需要在搜索字段前加上负号,如下图 摘要: Solr的 ...

  4. Python - Django - ORM 操作数据

    查询数据(查询管理员): app01/models.py 中定义的类,也就是创建的表 from django.db import models # 类必须继承 models.Model class A ...

  5. uva-10047

    我们考虑一个特殊情况,一个独轮车是一个圆环,独轮车靠这个圆环运动,这个圆环上涂有五个不同的颜色,如下图每个颜色段的圆心角是72度,这个圆环在MxN个方格的棋盘上运动,独轮车从棋盘中一个格子的中心点开始 ...

  6. Ingress.yaml

    apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test-ingress namespace: default annotat ...

  7. 多数据源springboot-jta-atomikos

    参考:  https://github.com/classloader/springboot-jta-atomikos-demo 參考:二 :建议参考  https://blog.csdn.net/a ...

  8. 解决org.springframework.context.NoSuchMessageException: No message found under code 'login.validate.er

    转自:https://blog.csdn.net/steveguoshao/article/details/36184971 在项目中遇到 org.springframework.context.No ...

  9. el 表达式的比较和包含

    相等( equal ) :eq 不相等( not equal ): ne / neq 大于( greater than ): gt 小于( less than ): lt 大于等于( great th ...

  10. VBA 获取文件夹内的文件列表

    Private strFiles(20) Private Sub GetFiles(ByVal strFolder As String, ByVal ty As String) ' 获取文件列表 If ...