樹形DP 戰略遊戲

2021-10-02 03:31:46 字數 1210 閱讀 6318

鮑勃喜歡玩電腦遊戲,特別是戰略遊戲,但有時他找不到解決問題的方法,這讓他很傷心。

現在他有以下問題。

他必須保護一座中世紀城市,這條城市的道路構成了一棵樹。

每個節點上的士兵可以觀察到所有和這個點相連的邊。

他必須在節點上放置最少數量的士兵,以便他們可以觀察到所有的邊。

你能幫助他嗎?

例如,下面的樹:

只需要放置1名士兵(在節點1處),就可觀察到所有的邊。

輸入格式

輸入包含多組測試資料,每組測試資料用以描述一棵樹。

對於每組測試資料,第一行包含整數n,表示樹的節點數目。

接下來n行,每行按如下方法描述乙個節點。

節點編號:(子節點數目) 子節點 子節點 …

節點編號從0到n-1,每個節點的子節點數量均不超過10,每個邊在輸入資料中只出現一次。

輸出格式

對於每組測試資料,輸出乙個佔據一行的結果,表示最少需要的士兵數。

資料範圍

0last點就是我們每乙個節點,如果這個節點放置了則我們與他相連線的節點可連可不連所以選乙個花費比較少的。

#include

#include

#include

using

namespace std;

const

int n =

1510

;int n;

int h[n]

, e[n]

, ne[n]

, idx;

int f[n][2

];bool st[n]

;void

add(

int a,

int b)

void

dfs(

int u)

}int

main()

}int root =0;

while

(st[root]

) root ++

;dfs

(root)

;printf

("%d\n"

,min

(f[root][0

], f[root][1

]));

}return0;

}

樹形DP 戰略遊戲

description input 輸入檔案中資料表示一棵樹,描述如下 第一行 n,表示樹中結點的數目。第二行至第n 1行,每行描述每個結點資訊,依次為 該結點標號i,k 後面有k條邊與結點i相連 接下來k個數,分別是每條邊的另乙個結點標號r1,r2,rk。對於乙個n 0 n 1500 個結點的樹,...

戰略遊戲 樹形DP入門)

題目鏈結 here 題目分析 放置哨兵無非兩種情況,放或不放,我們可以用dp i 1 來表示第i個結點放置哨兵,dp i 0 來表示第i個結點不放置哨兵,我們可以從上往下,從左往右來遍歷樹,所以這就用到了樹形dp的知識,我們很容易知道,如果父親結點沒放哨兵,那麼子結點肯定要放置哨兵,如果父親放置了哨...

動態規劃 樹形DP 題解 戰略遊戲

題意思路 woj 2532 戰略遊戲 洛谷p2016 戰略遊戲 這道題主要是看邊的情況。第一行 n,表示樹中結點的數目。第二行至第n 1行,每行描述每個結點資訊,依次為 該結點標號i,k 後面有k條邊與結點i相連 接下來k個數,分別是每條邊的另乙個結點標號r1,r2,rk。對於乙個n 0輸出檔案僅包...