【并查集】经典例题(一)

一.战舰

        1.题目

题目描述:

有1~n艘战舰,编号分别是1~n。开始,第i号战舰在第i列上。有m条命令,命令一共包含2种1、M, ij,将i号战舰所在的列的全部战舰,保持原有顺序接到第i列战舰后面;2、Cij,查询第i号战舰和第j号战舰是否在同一列,如果是中间间隔多少搜战舰。 (如果不在同一列,输出-1)n<=30000,m<500000)

样例输入:

4 4

M 2 3

C 1 2

M 2 4

C 4 2

样例输出:

-1

1

         2.思路:

看到题,我们不难发现,这个可以建模为并查集,因为有明显特征嘛,不多赘述。

                步骤一:

实现初始值和M的简单功能(不考虑路径距离)

​
#include<bits/stdc++.h>
uisng namespace std;
//  并查集数组  到祖先的距离  有多少成员 
int fa[30010] , dis[30010] , size[30010];

int find(int x){
	if(fa[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值