0分RE求条!!!
查看原帖
0分RE求条!!!
1140668
___W___Z___L___PVP楼主2025/1/15 15:14
#include <bits/stdc++.h>
using namespace std;
int f[500009];
int n, k, sum = 0, len = 0;

struct rode {
	int xx, yy;
} a[500009];

int find(int x) {
	if (f[x] == x)
		return x;
	else
		return f[x] = find(f[x]);
}

int ppp(int x, int y) {
	int fx = find(x), fy = find(y);
	if (fx != fy)
		f[fy] = fx;
}

int main() {
	cin >> n >> k;
	for (int i = 1; i <= n; i++)
		f[i] = i;
	while (k--) {
		int op, x, y;
		cin >> op >> x >> y;
		if (op == 1) {
			int flag = 0;
			for (int i = 1; i <= len; i++) {
				if ((a[i].xx == x && a[i].yy == y) || (a[i].xx == y && a[i].yy == x)) {
					flag = 1;
					break;
				}
			}
			if (x > n || y > n)
				flag = 1;
			if (flag == 0) {
				ppp(x, y);
			}
			sum += flag;
		} else {
			int flag = 0;
			if (x > n || y > n)
				flag = 1;
			if (x == y)
				flag = 1;
			if (find(x) == find(y))
				flag = 1;
			sum += flag;
			if (flag == 0) {
				a[++len].xx = x;
				a[len].yy = y;
			}
		}
	}
	cout << sum;

	return 0;
}
2025/1/15 15:14
加载中...