遇到一个迷的问题(数组下标的问题)
查看原帖
遇到一个迷的问题(数组下标的问题)
784646
JoeOL楼主2023/10/14 11:55

为什么这个不能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;
}
2023/10/14 11:55
加载中...