Luogu1272 重建道路 樹形dp

2021-08-30 15:22:35 字數 988 閱讀 2312

[lin

k\frak

link

]

求樹上有p個點的連通塊數目。

求刪除最少多少條邊之後能夠讓樹上出現有p個點的連通塊

考慮點x保留k個點要剪掉的最少邊數

那麼f(x,k)=min σyi=k

注意在統計非根節點的時候要剪掉連向父親的邊。

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

#define add_edge(a,b) nxt[++tot]=head[a],head[a]=tot,to[tot]=b

int head[

155]

, nxt[

310]

, to[

310]

, siz[

155]

, f[

155]

[155

], son[

155]

;int n, p, tot;

void

dfs(

int x,

int fa)

f[x][1

]= son[x]

;for

(int i = head[x]

; i; i = nxt[i])}

}}intmain()

dfs(1,

0);int ans = f[1]

[p];

for(

int i =

2; i <= n;

++i)

printf

("%d"

, ans)

;return0;

}

Luogu1272 重建道路(動態規劃)

一場可怕的 後,人們用n個牲口棚 1 n 150,編號1.n 重建了農夫john的牧場。由於人們沒有時間建設多餘的道路,所以現在從乙個牲口棚到另乙個牲口棚的道路是惟一的。因此,牧場運輸系統可以被構建成一棵樹。john想要知道另一次 會造成多嚴重的破壞。有些道路一旦被毀壞,就會使一棵含有p 1 p n...

luogu P1272 重建道路 樹形DP

luogu p1272 重建道路 x n y n z n 題目描述 一場可怕的 後,人們用n個牲口棚 1 n 150,編號1.n 重建了農夫john的牧場。由於人們沒有時間建設多餘的道路,所以現在從乙個牲口棚到另乙個牲口棚的道路是惟一的。因此,牧場運輸系統可以被構建成一棵樹。john想要知道另一次 ...

P1272 重建道路

p1272 重建道路 題意 有一棵n個點的樹,求刪掉最少的邊數,使得其中p個點的子樹和另一部分分離 dp i j 表示編號為i的點周圍組成j個點的樹最少要刪的邊數 初始狀態 dp i 1 連線這個點的邊數 每個點都是點數為1的樹 然後去考慮連線兩個點,使子樹的點數增多。有兩個點數都是1的樹dp i ...