为什么这个不能AC
int cnt;
int main() {
cin >> n >> m;
root[0]=init(1, n);
while (m--) {
int opt, a, b, k;
cin >> opt;
if (opt == 1) {
cin >> a >> b;
root[++cnt] = merge(root[cnt - 1], a, b);
}
else if (opt == 2) {
cin >> k;
root[++cnt] = root[k];
}
else {
cin >> a >> b;
int fa=find(root[cnt], a),fb=find(root[cnt],b);
if (fa==fb) cout << 1 << endl;
else cout << 0 << endl;
root[++cnt] = root[cnt - 1];
}
}
return 0;
}
这个能AC
int cnt;
int main() {
cin >> n >> m;
root[0]=init(1, n);
for (int i=1;i<=m;i++) {
int opt, a, b, k;
cin >> opt;
if (opt == 1) {
cin >> a >> b;
root[i] = merge(root[i - 1], a, b);
}
else if (opt == 2) {
cin >> k;
root[i] = root[k];
}
else {
cin >> a >> b;
int fa=find(root[i-1], a),fb=find(root[i-1],b);
if (fa==fb) cout << 1 << endl;
else cout << 0 << endl;
root[i] = root[i - 1];
}
}
return 0;
}