[P2607][ZJOI2008]骑士(基环树)
边数等于点数,是基环树。考虑dp,如果是树的话,转移方程为dp[u][1](选择u)=w[u]+Σdp[v][0],v为u的子节点; dp[u][0](不选择u)=Σmax(dp[v][0],dp[v][1])。然后基环树只要找到环后,断开环上的一条边就成了树。断开的边上两端点不能同时选择,所以对于每棵基环树,我们求两边dp,分别限制两个端点必须不选,然后取最大的结果。每棵树答案相加即为最终答案。#include<cstdio>#include<cstring>#inclu
原创
2020-08-30 18:28:54 ·
297 阅读 ·
0 评论