蒟蒻代码::
#include<bits/stdc++.h>
#define N 50009
using namespace std;
int n, k, ans;
int x, y, p;
int fa[2 * N];
int find(int x) {
if (fa[x] == x) return x;
return fa[x] = find(fa[x]);
}
void merge(int a, int b) {
a = find(a);
b = find(b);
if (fa[a] > fa[b]) fa[b] = a;
else {
fa[a] = b;
fa[b] += (fa[a] == fa[y]);
}
}
int main() {
ios::sync_with_stdio(0);
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> k;
for (int i = 1; i <= 2 * n; i++) fa[i] = i;
for (int i = 1; i <= k; i++) {
cin >> p >> x >> y;
if (x > n || y > n) ans++;
else if (x == y && p == 2) ans++;
else if (p == 1) {
if (fa[min(x, y)] == fa[max(x, y) + n]) ans++;
else merge(x, y);
} else if (p == 2) {
if (find(x) == find(y)) ans++;
else merge(min(x, y), max(x, y) + n);
}
// cout << ans << "\n";
}
cout << ans;
return 0;
}
qwq 求助啊!!