CF219D Choosing Capital for Treeland
这道题一开始觉得比较毒瘤,但是想一下还是想的出来的。
我们考虑定义\(dp[i][0]\)代表到点\(i\)所有子节点的最小权值,\(dp[i][1]\)代表到点\(i\)子树外所有节点的最小权值。
那么显然有:\(dp[i][0]=\sum _{t\in son_i} dp[t][0]+[t->i]\)
当\(fa_i=p\),又可以推出:\(dp[i][1]=dp[p][1]+[i->p]+\sum _{t\in son_p,t\neq i}(dp[t][0]+[t->p])\)
那么最后,对于节点\(x\),选择\(x\)为首都的代价就是:\(dp[x][0]+dp[x][1]\)
#include #include #include #include #include #include