51Nod 1299 監獄逃離

2022-04-02 23:15:30 字數 1004 閱讀 3477

這其實是一道樹形dp的神仙題。

然後開始推推推,1 hour later樣例都過不了

然後仔細一看題目,貌似像乙個最小割模型,然後5min想了想建圖:

首先拆點,將每個點拆成進和出兩個,然後連邊,邊權即為\(1\)(表示割掉這條邊的代價)

然後設超級源\(s\),讓\(s\)向所有犯人的出點(因為犯人的點無法割去)連邊,邊權為\(\infty\),然後對於所有的出口(葉子節點),都向\(t\)連邊,邊權為\(\infty\)。

最後根據題目給出的關係建邊,然後因為這些邊不可以被割掉,因此邊權為\(\infty\)

然後據說dinic的最劣複雜度是\(o(n^2m)\)的,所以直接沒有畏懼地交了

然後a了?!第一次看到51nod的題資料這麼水(然後莫名複習了一波網路流

當然正解是樹形dp,當然可以看陳瀟然dalao的部落格

diniccode

#include#include#includeusing namespace std;

const int n=100005,inf=1e9;

struct edge

e[n<<4];

int head[n<<1],n,cnt=-1,m,x,y,dep[n<<1],q[n<<1],s,t,l[n<<1];

inline char tc(void)

inline void read(int &x)

inline void double_add(int x,int y,int z)

inline int min(int a,int b)

int main()

return printf("%d",dinic()),0;

}

51nod 1299 監獄逃離

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

51nod 1299 監獄逃離

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

51nod 1299 監獄逃離

1299 監獄逃離 基準時間限制 1 秒 空間限制 131072 kb 監獄有n條道路連線n 1個交點,編號0至n,整個監獄被這些道路連在一起 任何2點之間都有道路 人們通過道路在交點之間走來走去。其中的一些交點只有一條路連線,這些點是監獄的出口。在各個交點中有m個點住著犯人 m n 1 剩下的點可...