//给一颗树,节点有白有黑,白节点可以与黑节点交换位置,算出让黑节点连通的最小交换次数 //转换问题变成找连通分支块 使得包含黑节点最多即可 //树形dp 对node存储一个f[][2] //f[i][1]表示node 子树下(包括自己),包含i个节点的连通分支的最大黑节点数 //f[i][0]不包含自己... //答案就是 n-max( f[kk][1],f[kk][0] ) kk是整个图黑节点数
对树从根(根任意 ) dfs下去,dfs的过程就是算f的过程
不贴代码~