题面 解析 其实这题可以考虑离线做法,用并查集解决. 因为仔细想,添加标记并不方便, 但如果用并查集记录下祖先, 再一一删除,就会方便很多. 先把每次操作记录下来, 同时记录下每个点被标记的次数(因为有多次标记,所以不能只用bool). 然后dfs遍历,记录祖先. 再倒序处理, 当一个点的标记被删完时,就把它的并查集指向它的父亲, 并统计答案. 最后输出就行了! 具体看代码: #include<bits/stdc++.h> using namespace std; inline int rea…