发现自己学习的换根dp全是假的。
我们在换根dp时,第一次dfs考虑处理出任意一个根的答案。
第二次dfs时,我们当前节点为(x)。
我们考虑求出(x)的某个儿子(v)的答案,从(v)回到(x)后再求出以(x)为根的答案。
这需要在(O(1))的时间内更新dp值。
视情况用set/加减法/维护最大次大维护。
以前写的都是(O(deg))维护dp值,结果做一道简单题才发现自己的理解全是错的。
发现自己学习的换根dp全是假的。
我们在换根dp时,第一次dfs考虑处理出任意一个根的答案。
第二次dfs时,我们当前节点为(x)。
我们考虑求出(x)的某个儿子(v)的答案,从(v)回到(x)后再求出以(x)为根的答案。
这需要在(O(1))的时间内更新dp值。
视情况用set/加减法/维护最大次大维护。
以前写的都是(O(deg))维护dp值,结果做一道简单题才发现自己的理解全是错的。