MLE爆栈求解释
查看原帖
MLE爆栈求解释
743373
Vitamin_B楼主2023/9/24 13:43

MLE(应该是爆栈):

# include <bits/stdc++.h>

# define ffor(i,name) \
	for (auto i = name.begin (); i != name.end (); ++ i)

# define reg register

using namespace std;

typedef long long ll;

typedef pair <int, int> pii;

typedef pair <ll, ll> pll;

int n, m, f[10005], x, y, op;

int find (int x) {

	return x == f[x] ? x : f[x] = find (f[x]);

}

int main () {

	ios::sync_with_stdio (0);

	cin.tie (0);

	cout.tie (0);

	cin >> n >> m;

	for (reg int i = 1; i <= n; ++ i)
		f[i] = i;

	while (m --) {

		cin >> op >> x >> y;

		if (op < 2)
			f[find (x)] = y; //这里不一样
		else
			cout << (find (x) == find (y) ? "Y\n" : "N\n");

	}

	return 0;

}

AC:

# include <bits/stdc++.h>

# define ffor(i,name) \
	for (auto i = name.begin (); i != name.end (); ++ i)

# define reg register

using namespace std;

typedef long long ll;

typedef pair <int, int> pii;

typedef pair <ll, ll> pll;

int n, m, f[10005], x, y, op;

int find (int x) {

	return x == f[x] ? x : f[x] = find (f[x]);

}

int main () {

	ios::sync_with_stdio (0);

	cin.tie (0);

	cout.tie (0);

	cin >> n >> m;

	for (reg int i = 1; i <= n; ++ i)
		f[i] = i;

	while (m --) {

		cin >> op >> x >> y;

		if (op < 2)
			f[find (x)] = find (y); //这里不一样
		else
			cout << (find (x) == find (y) ? "Y\n" : "N\n");

	}

	return 0;

}

为啥啊

2023/9/24 13:43
加载中...