【并查集】银河英雄传说 迷之错误
  • 板块学术版
  • 楼主ssjjdns
  • 当前回复1
  • 已保存回复1
  • 发布时间2021/4/5 22:21
  • 上次更新2023/11/5 00:59:03
查看原帖
【并查集】银河英雄传说 迷之错误
64544
ssjjdns楼主2021/4/5 22:21

大佬来救救wo吧 写的怎么看都没问题 但就是不对,样例过不去

#include<bits/stdc++.h>
using namespace std;
int t;
int fa[30007],size[30007],d[30007];
int get(int x){
	if(fa[x]==x)return x;
	int a=get(fa[x]);
	fa[x]=a;
	d[x]+=d[fa[x]];
	return a;
}
void merge(int x,int y){
	int a=get(x),b=get(y);
	fa[a]=b;
	d[a]=size[b];
	size[b]+=size[a];
	
}
int main(){
	cin>>t;
	for(int i=1;i<=30000;i++){
		fa[i]=i;
		//d[i]=1;
		size[i]=1;
	}
	for(int i=1;i<=t;i++){
		char s,xx,yy;
		cin>>s>>xx>>yy;
		if(s=='M')merge(xx,yy);
		if(s=='C'){
			//cout<<"kk";
			 if(get(xx)==get(yy)){
				cout<<abs(d[xx]-d[yy])-1<<endl;
			 }
			 else cout<<"-1"<<endl;
		} 
	} 

	return 0;
} 
2021/4/5 22:21
加载中...