1299 監獄逃離
基準時間限制:1 秒 空間限制:131072 kb
監獄有n條道路連線n + 1個交點,編號0至n,整個監獄被這些道路連在一起(任何2點之間都有道路),人們通過道路在交點之間走來走去。其中的一些交點只有一條路連線,這些點是監獄的出口。在各個交點中有m個點住著犯人(m <= n + 1),剩下的點可以安排警衛,有警衛把守的地方犯人無法通過。給出整個監獄的道路情況,以及犯人所在的位置,問至少需要安排多少個警衛,才能保證沒有1個犯人能夠逃到出口,如果總有犯人能夠逃出去,輸出-1。
如上圖所示,點1,6 住著犯人,0,4,5,7,8是出口,至少需要安排4個警衛。
input
第1行:2個數n, m中間用空格分隔,n表示道路的數量,m表示犯人的數量(1<= n <= 100000, 0 <= m <= n + 1)。output之後n行:每行2個數s, e中間用空格分隔,表示點編號為s的點同編號為e的點之間有道路相連。(0 <= s, e <= n)。
之後的m行,每行1個數pi,表示編號為pi的點上有犯人。
輸出1個數對應最少需要多少警衛才能不讓犯人逃出監獄。input示例
8 2output示例0 11 2
2 33 4
3 52 6
6 86 7
16
4仔細推就行了。
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8view codeusing
namespace
std;
9 typedef long
long
ll;10 typedef long
double
ld;11 typedef pairpr;
12const
double pi=acos(-1
);13
#define rep(i,a,n) for(int i=a;i<=n;i++)
14#define per(i,n,a) for(int i=n;i>=a;i--)
15#define rep(i,u) for(int i=head[u];i;i=next[i])
16#define clr(a) memset(a,0,sizeof(a))
17#define pb push_back
18#define mp make_pair
19#define fi first
20#define sc second
21#define pq priority_queue
22#define pqb priority_queue , less>
23#define pqs priority_queue , greater>
24#define vec vector
25 ld eps=1e-9
;26 ll pp=1000000007
;27 ll mo(ll a,ll pp)
28 ll powmod(ll a,ll b,ll pp)
29void fre()
30//
void add(int x,int y,int z)
31int dx[5]=,dy[5]=;
32 ll read()
37bool flag,fl[100005
];38
int ans,v[200005],next[200005],head[200005],e,in[200005],root,dp[200005
];39
void add(int x,int y)
40void dfs(int x,int
f)50
if(fl[x])
52 ans+=ans1; dp[x]=2
;53 } else
58if (ans1 && !ans2)
59if (ans2 && !ans1)
60if (!ans1 && !ans2)
62else 63}
64}65}
66int
main()
75if (m==0)
76for (int i=1;i<=m;i++)
79 dfs(root,-1
);80
if (flag) puts("-1"
);81 printf("%d"
,ans);
82return0;
83 }
51nod 1299 監獄逃離
監獄有n條道路連線n 1個交點,編號0至n,整個監獄被這些道路連在一起 任何2點之間都有道路 人們通過道路在交點之間走來走去。其中的一些交點只有一條路連線,這些點是監獄的出口。在各個交點中有m個點住著犯人 m n 1 剩下的點可以安排警衛,有警衛把守的地方犯人無法通過。給出整個監獄的道路情況,以及犯...
51Nod 1299 監獄逃離
這其實是一道樹形dp的神仙題。然後開始推推推,1 hour later樣例都過不了 然後仔細一看題目,貌似像乙個最小割模型,然後5min想了想建圖 首先拆點,將每個點拆成進和出兩個,然後連邊,邊權即為 1 表示割掉這條邊的代價 然後設超級源 s 讓 s 向所有犯人的出點 因為犯人的點無法割去 連邊,...
51nod 1299 監獄逃離
監獄有n條道路連線n 1個交點,編號0至n,整個監獄被這些道路連在一起 任何2點之間都有道路 人們通過道路在交點之間走來走去。其中的一些交點只有一條路連線,這些點是監獄的出口。在各個交點中有m個點住著犯人 m n 1 剩下的點可以安排警衛,有警衛把守的地方犯人無法通過。給出整個監獄的道路情況,以及犯...