测试点数据都过,却一直WA,大佬求改一下
查看原帖
测试点数据都过,却一直WA,大佬求改一下
800058
sys20110928楼主2025/2/5 10:55
#include<bits/stdc++.h>
using namespace std;
const int N = 50010;
int t;
int father[N] = {};
int k[N] = {};
int l[N] = {};
int find(int x)
{
	if(father[x] == x) 
	{
		return x;
	}
	int flag = find(father[x]);
	k[x] += k[father[x]];
	return father[x] = flag;
}
int main()
{
//	freopen("P1196_1.in" , "r" , stdin);
//	freopen("P1196.out"  , "w" , stdout);
	cin >> t;
	char op;
	for(int i = 1;i <= N;++i)
	{
		father[i] = i;
		l[i] = 1;
	}
	int i , j;
	for(int v = 1;v <= t;++v)
	{
		int findi , findj;
		cin >> op >> i >> j;
		if(op == 'M')
		{
			findi = find(i);
			findj = find(j);
			father[findi] = findj;
			k[findi] = l[findj];
			l[findj] += l[findi];
		}
		else
		{
			if(find(i) == find(j)) 
			{
				cout << max(k[i] , k[j]) - min(k[i] , k[j]) - 1 << endl;
			}
			else 
			{
				cout << -1 << endl;
			}
		} 
	}
	
	
	return 0;
}

https://www.luogu.com.cn/record/201327527

2025/2/5 10:55
加载中...