51nod 1299 監獄逃離 樹形dp 最小割

2021-08-09 20:23:20 字數 895 閱讀 8399

題意:監獄有n條道路連線n + 1個交點,編號0至n,整個監獄被這些道路連在一起(任何2點之間都有道路),人們通過道路在交點之間走來走去。其中的一些交點只有一條路連線,這些點是監獄的出口。在各個交點中有m個點住著犯人(m <= n + 1),剩下的點可以安排警衛,有警衛把守的地方犯人無法通過。給出整個監獄的道路情況,以及犯人所在的位置,問至少需要安排多少個警衛,才能保證沒有1個犯人能夠逃到出口,如果總有犯人能夠逃出去,輸出-1。

#include

#include

#include

#define fo(i,a,b) for(int i=a;i<=b;i++)

#define fd(i,a,b) for(int i=a;i>=b;i--)

using

namespace

std;

const

int n=2e5+5;

int n,m;

int head[n],next[n],go[n],d[n];

int f[n],s[5],bz[n],tot,ans;

inline

void add(int x,int y)

inline

void dfs(int x,int fa)

}if (bz[x])

else

if (s[1]&&s[2])

else

if (s[1])f[x]=1;

else

if (s[2])f[x]=2;

else

if (s[0])f[x]=0;

}int main()

fo(i,1,m)

fo(i,1,n+1)f[i]=1;

fo(i,1,n+1)

}}

51nod 1299 監獄逃離 樹形DP

傳送門 51nod 1299 題意 中 思路 dp i 表示警察全部放置完成後i節點的狀態 0 表示逃犯不能到達i節點並且i節點能 經由其子樹 到達出口 不經過警察的情況下 1 表示逃犯不能到達i節點並且i節點不能 經由其子樹 到達出口 不經過警察的情況下 2 表示逃犯能到達i節點並且i節點不能 經...

51nod1299 監獄逃離(樹形DP)

點此看題面 大致題意 在一棵樹中有n nn條邊連線n 1 n 1n 1個節點,現在已知這棵樹上的m mm個節點,要求封住最少的節點,使這m mm個節點中的任意乙個節點無法到達葉子節點,若能辦到輸出最少封住的節點數,若不能輸出 1 1 1。這道題目的正解是樹形dpdp dp h l666 hl666 ...

51nod 1299 監獄逃離

監獄有n條道路連線n 1個交點,編號0至n,整個監獄被這些道路連在一起 任何2點之間都有道路 人們通過道路在交點之間走來走去。其中的一些交點只有一條路連線,這些點是監獄的出口。在各個交點中有m個點住著犯人 m n 1 剩下的點可以安排警衛,有警衛把守的地方犯人無法通過。給出整個監獄的道路情況,以及犯...