一贴两用:70pts 请进 & 数据是否过水
查看原帖
一贴两用:70pts 请进 & 数据是否过水
106738
_Felix楼主2022/4/8 21:51

70pts:你 nn,mm 写反了捏。

数据是否过水:我并查集 用的路径压缩 过了 具体大概是这么个东西

int find3(int x) {
	if(x == f1[x]) return x;
	else {
		int t = find3(f1[x]);
		roll.push_back(mkp(x, f1[x]));
		return f1[x] = t;
	}
}
void merge3(int x, int y) {
	x = find3(x); y = find3(y);
	if(x < y) swap(x, y);
	if(x != y) roll.push_back(mkp(x, f1[x])), f1[x] = y;
}
//以下是撤销
while(roll.size()) {
	PII nw = roll.back(); roll.pop_back();
	f1[nw.fi] = nw.se;
} 
2022/4/8 21:51
加载中...