Zublicanes and Mumocrates
Problem's Link
Mean:
给定一个无向图,需要把这个图分成两部分,使得两部分中边数为1的结点数量相等,最少需要去掉多少条边.
analyse:
树形dp.
dp[cur][i][j]:当cur为i集合的时候 有j个和i同集合的方案
状态转移方程为:
dp[cur][i][j+k] = min{dp[to][i^1][j=(叶子个数-d)]+dp[cur][i][k]+1,dp[to][i][j]+dp[cur][i][k]}
cnt为叶子节点的个数.
最后答案是:min{ dp[root][0][cnt/2] ,dp[root][1][cnt/2]}
Time complexity: O(N)