都城(樹形DP)

2022-07-22 12:27:13 字數 769 閱讀 6432

題目描述:

題解:

正難則反,先求出讓所有其它城市到達都城需反向幾條邊,再用總邊數減去即可

f[i]表示以i為根的子樹調整好需反向的邊數

g[i]表示以i為都城需反向的邊數

#include#include

using

namespace

std;

const

int n=1000010

;struct

edgeedge[n

<<1

];int

n,head[n],cnt,f[n],g[n];

void add_edge(int u,int v,int

w)void dfs1(int u,int

fa)}

void dfs2(int u,int

fa)}

intmain()

dfs1(

1,0);

g[1]=f[1

]; dfs2(

1,0);

for(int i=1;i<=n;i++) printf("

%d\n

",n-1-g[i]);

return0;

}

樹形DP 樹形DP四例

是時候練一下dp了!我的題單 portkey f u,if fu,i 表示以u uu為根節點的子樹中保留i ii條樹枝的最大蘋果數 f u,i max f max f fu,i max這些題是菜,但也不能輕視啊!include using namespace std define in read i...

HLOJ 樹形DP前置 DFS(樹形DP入門)

給定一棵 n nn 個點的樹,根為 t tt求每個點的父親是哪個點,t tt 的父親輸出 0 00第一行兩個整數 n,t n,tn,t接下來 n 1 n 1n 1 行,每行兩個整數 x,y x,yx,y,表示 x,y x,yx,y 之間有一條邊 n nn 行,第 i ii 行乙個整數,表示 i ii...

樹形dp小結

這些天做了一些樹形dp的題目,感覺有了些領悟,尤其是理解到樹形揹包就是分組揹包之後。選出幾道不錯的總結一下 hdu 1520 hdu 4003 poj 1155 poj 2486 hdu 4313 hdu 4340 hdu 1520 入門水題 每個節點有權值,子節點和父節點不能同時選,問最後能選的最...