本人认为形如这样的做法是有问题的,Hack 考虑
merge(1,2),merge(2,3),merge(1,3)
现在 1,2,31,2,31,2,3 在同一连通块,然后我们 undone(opt[0])undone(opt[0])undone(opt[0]),此时因为后两个操作,1,2,31,2,31,2,3 应该依然联通,但根据这篇 Blog 应该会变成 1,31,31,3 不连通。
请问,是孩子对某处理解有误,还是可撤销并查集有更好的做法?