可能不止一个问题,但输入是个大问题
查看原帖
可能不止一个问题,但输入是个大问题
500803
zzxzzxCCC楼主2024/5/25 16:55
#include<bits/stdc++.h>
using namespace std;
int fa[30050], length[30050], num[30010];
//num[i]--->第 i 列飞船的数量         length[i]--->飞船 i 到所在列列头的距离 
int getfa(int x){
	if(fa[x] != x){
		int y = getfa(x);
		length[x] += length[fa[x]];
		fa[x] = y;
	}
	return fa[x];
}
char c;
int s, t, T;
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	cin>>T;
	for(int i = 1 ; i <= 30010 ; i ++){
		fa[i] = i;
		num[i] = 1;
		length[i] = 0; 
	}
	for(int i = 1 ; i <= T ; i ++){
		cin>>c>>s>>t;
		int x = getfa(s);
		int y = getfa(t);
		if(c == 'M'){
			length[x] = num[y];
			fa[x] = y;
			num[y] += num[x];
		}
		if(c == 'C'){
			if(x != y) printf("-1\n");
			else printf("%d\n", abs(length[s] - length[t]) - 1);
		}
	}
	return 0;
}
2024/5/25 16:55
加载中...