题解:AT_abc448_d [ABC448D] Integer-duplicated Path
tangtianyao0123 · · 题解
题目传送门。
不难发现,
我们发现当
第一种情况好处理,关键看第二种。
我们可以使用一个 multiset 维护。当遍历到这个节点时插入 multiset 中。
核心代码:
void dfs(int u, int fa){
ans[u] = ans[fa] || s.count(a[u]);
s.insert(a[u]);
for(int v : g[u]){
if(v == fa) continue;
dfs(v, u);
}
s.erase(s.find(a[u]));//只能删掉一个
}