20分MLE求助
查看原帖
20分MLE求助
709447
tx774楼主2022/11/17 22:45

#include <cstdio>
using namespace std;
const int N = 10000 + 5;
int prt[N];

int find_root(int x)
{
	if (prt[x] == x) return x;
	int f = find_root(prt[x]);
	prt[x] = f; 
	return f;
}

int main()
{
	int n;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
		prt[i] = i;
	
	int m;
	scanf("%d", &m);
	while (m--)
	{
		int opt, x, y;
		scanf("%d%d%d", &opt, &x, &y);
		if (opt == 1)
		{
			int f_x = find_root(x), f_y = find_root(y);
			prt[x] = y;
		}
		if (opt == 2)
		{
			int f_x = find_root(x), f_y = find_root(y);
			if (f_x == f_y) printf("Y\n");
			else printf("N\n");
		}
	}
	return 0;
}
2022/11/17 22:45
加载中...