把find(i)==m-1改成find(i)=find(m-1)
同理find(i)==m+1,find(i)=find(m+1)
```c
#include <iostream>
using namespace std;
int f[200001];
int find(int x) {
if (f[x] != x)f[x] = find(f[x]);
return f[x];
}
void mgs(int x, int y) {
int a = find(x), b = find(y);
if (a != b) f[b] = a;
}
int main() {
int n, m, p, q;
cin >> n >> m >> p >> q;;;
for (int i = 0; i <= n + m; i++) {
f[i] = i;
}
for (int i = 1; i <= p; i++) {
int a, b;
cin >> a >> b;
mgs(a + m, b + m);
}
for (int i = 1; i <= q; i++) {
int a, b;
cin >> a >> b;
mgs(m + a, m + b);
}
int c = 0, d = 0;
for (int i = 0; i <= n + m; i++) {
if (find(i) == find(m + 1))c++;
if (find(i) == find(m - 1)) {
d++;
}
}
cout << min(c, d);
}
```
by doublebreathing @ 2023-07-02 21:52:46