https://www.luogu.org/problemnew/show/P1196

银河英雄传说

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
int f[maxn],d[maxn],s[maxn]; // f[i]用来记录i节点的根 d[i]记录i所在集合的前面有几个节点 s[i]记录s所在集合中节点的总大小
int n;
void init()//初始化
{
for(int i=; i<=; i++)
{
f[i]=i;
d[i]=;// 初始每个节点前面视为0,每个节点自成一个集合大小为1
s[i]=;
}
}
int getf(int a)
{
if(a==f[a]) return a;
int root=getf(f[a]);
d[a]+=d[f[a]]; // 在将a节点指向新的根节点时,将d[a]更新为从a到根的距离
return f[a]=root; // 压缩路径
}
void merge(int a, int b)
{
int t1,t2;
t1=getf(a);
t2=getf(b);
f[t2]=t1;//靠左原则,将t2合并到t1上
d[t2]=s[t1];// 注意顺序 合并之后t1的大小为t1+t2的和,将d[t2]的距离更新为之前s[t1]的大小
s[t1]+=s[t2];
}
int main()
{
init();
int t;
cin>>t;
char c;
int m,n;
for(int i=; i<=t; i++)
{
cin>>c>>m>>n;
if(c=='C')
{
if(getf(m)!=getf(n))
cout<<"-1"<<endl;
else
cout<<abs(d[m]-d[n])-<<endl;// 战舰之间的距离为两者相减的绝对值再减1
}
else
merge(n,m);// 合并两列的战舰
}
return ;
}

“扩展域”与"边带权"的并查集的更多相关文章

  1. Codevs 3287 货车运输 2013年NOIP全国联赛提高组(带权LCA+并查集+最大生成树)

    3287 货车运输 2013年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description A 国有 n 座 ...

  2. bzoj 1201[HNOI2005]数三角形 1202 [HNOI2005]狡猾的商人 暴力 权值并查集

    [HNOI2005]数三角形 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 349  Solved: 234[Submit][Status][Disc ...

  3. 食物链(带权&种类并查集)

    食物链 http://poj.org/problem?id=1182 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9326 ...

  4. HDU-3038How Many Answers Are Wrong权值并查集

    How Many Answers Are Wrong 题意:输入一连串的区间和,问和前面的矛盾个数: 思路:我在做专题,知道是并查集,可是还是不知道怎么做,学了一下权值并查集和大佬的优秀思路,感觉回了 ...

  5. Poj 1182种类(带权)并查集

    题目链接 食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 44316 Accepted: 12934 Descriptio ...

  6. 浅谈并查集&种类并查集&带权并查集

    并查集&种类并查集&带权并查集 前言: 因为是学习记录,所以知识讲解+例题推荐+练习题解都是放在一起的qvq 目录 并查集基础知识 并查集基础题目 种类并查集知识 种类并查集题目 并查 ...

  7. Travel(HDU 5441 2015长春区域赛 带权并查集)

    Travel Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Su ...

  8. POJ1417:True Liars(DP+带权并查集)

    True Liars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  9. CodeForces - 688C:NP-Hard Problem (二分图&带权并查集)

    Recently, Pari and Arya did some research about NP-Hard problems and they found the minimum vertex c ...

随机推荐

  1. MessagePack for C#

    MessagePack for C# 快速序列化组件MessagePack介绍   简介 MessagePack for C#(MessagePack-CSharp)是用于C#的极速MessagePa ...

  2. 流程控制if、while、for

    if判断   if判断想执行第一个条件,if后的判断必须是True 1 什么是if判断 判断一个条件如果成立则做...不成立则做....2 为何要有if判断 让计算机能够像人一样具有判断的能力3 如何 ...

  3. word插入公式不自动斜体的解决办法

    1.word-视图-宏 2.自己随便输入一个宏名,比如就叫InsertEqua,然后将 Sub InsertEqua() Selection.OMaths.Add Range:=Selection.R ...

  4. MVC控制器返回一个list 视图接收

    控制器 public ActionResult InfoFrame() { List<Users> list = new List<Users>(); if (Session[ ...

  5. SqlServer 语法

    四.            Ranking 排序与排名是我们最为常用的统计方式,比如对班级的学生根据成员进行排名,或者按照成绩高低把学生划分成若干梯队:比如最好成绩的10名学生属于第一梯队,后10名又 ...

  6. Angular7_人员登记系统

    1.ts public peopleInfo: any = { username: 'kxy', sex: '男', cityList: ['汕头', '广州', '茂名'], city: '汕头', ...

  7. 第十三章 部署Java应用程序

    打包 清单文件被命名为MANIFEST.MF,用于描述归档特征. 清单文件被分为多个节, 第一节被称为主节,作用于整个文件; 其他节则必须起始于Name的条目. 节之间空行分开. jar cfm JA ...

  8. WebApi用JilFormatter处理客户端序列化的字符串加密,之后在服务端解析。

    本文有改动,参考原文:https://www.cnblogs.com/liek/p/4888201.html https://www.cnblogs.com/tonykan/p/3963875.htm ...

  9. hiho 1097 最小生成树一·Prim算法 (最小生成树)

    题目: 时间限制:10000ms 单点时限:1000ms 内存限制:256MB   描述 最近,小Hi很喜欢玩的一款游戏模拟城市开放出了新Mod,在这个Mod中,玩家可以拥有不止一个城市了! 但是,问 ...

  10. unity 网页加载AB问题

    下载一次后会缓存,清理一下就能加载新的同名AB了 AssetBundle.onload