求条
  • 板块灌水区
  • 楼主j27eGU
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/29 23:14
  • 上次更新2024/12/30 19:54:20
查看原帖
求条
1411360
j27eGU楼主2024/12/29 23:14
#include<bits/stdc++.h>
using namespace std;
int v[30010];
struct ship
{
	vector <int> l;
}a[30010];
void init()
{
	for(int i=1;i<=30000;i++)
	{
		a[i].l.push_back(i);
		v[i]=i;
	}
}
void hb(int x,int y)
{
	int vx=v[x],vy=v[y];
	for(int i=0;i<a[vx].l.size();i++)
	{
		a[vy].l.push_back(a[vx].l[i]);
		v[a[vx].l[i]]=y;
	}a[vx].l.clear();
}
int check(int h,int x,int y)
{
	int kx,ky;
	for(int i=0;i<a[h].l.size();i++)
	{
		if(a[h].l[i]==x)kx=i;
		if(a[h].l[i]==y)ky=i;
	}
	return max(kx,ky)-min(kx,ky)-1;
}
int main()
{
	vector <int> out;
	int t;
	cin>>t;
	init();
	while(t--)
	{
		char c;
		int i,j;
		cin>>c>>i>>j;
		if(c=='M')
		{
			hb(i,j);
		}
		if(c=='C')
		{
			if(v[i]!=v[j])
			{
				out.push_back(-1);
			}
			else
			{
				out.push_back(check(v[i],i,j));
			}
		}
	}
	for(int i=0;i<out.size();i++)cout<<out[i]<<endl;
}

题目

2024/12/29 23:14
加载中...