洛谷P3225 HNOI2012 礦場搭建 割點

2021-09-29 13:09:42 字數 1292 閱讀 3794

給出n≤1

e3

n\leq1e3

n≤1e

3個點的無向圖,你可以在每個點選擇放置避難所。然後求問所有的方案滿足:1.對於任何一點被破壞,剩下的點能都走到避難所。2.放置避難所的數目最少。

如果這個點放置在非割點的位置,那麼不會對圖的連通性產生影響。

所以先求出圖中所有的割點,這樣與每個割點相連線的就是乙個連通塊。

1.如果這個連通塊本身與0

00個割點相連,必須要放置2

22個。

2.如果這個連通塊本身與1

11個割點相連,任選乙個位置放置。

3.如果這個連通塊本身與超過1

11個割點相連,不必放置。

分類統計答案。

#include

using

namespace std;

typedef

long

long ll;

const

int inf=

0x3f3f3f3f

;const

int n=

1e3+7;

vector<

int> go[n]

;int dfn[n]

,low[n]

,tim=0;

bool cut[n]

;int vis[n]

;int t=0;

void

clear()

void

tarjan

(int u,

int rt)

low[u]

=min

(low[u]

,dfn[v]);

}if(u==rt&&ch>=

2) cut[u]=1

;}int sz=

0,cu=0;

void

dfs(

int u)

else

++sz;

for(

auto

&v:go[u])}

int kase=0;

intmain()

for(

int i=

1;i<=n;i++)}

ll ans1=

0,ans2=1;

for(

int i=

1;i<=n;i++)}

printf

("case %d: %lld %lld\n"

,++kase,ans1,ans2);}

return0;

}

洛谷P3225 HNOI2012 礦場搭建

題意 煤礦工地可以看成是由隧道連線挖煤點組成的無向圖。為安全起見,希望在工地發生事故時所有挖煤點的工人都能有一條出路逃到救援出口處。於是礦主決定在某些挖煤點設立救援出口,使得無論哪乙個挖煤點坍塌之後,其他挖煤點的工人都有一條道路通向救援出口。請寫乙個程式,用來計算至少需要設定幾個救援出口,以及不同最...

洛谷 P3225 HNOI2012 礦場搭建

邊數n 500的挖煤點,需要設定盡量少的逃生出口,使得某個煤礦倒塌後,其他挖煤點的工人仍然可以通過某條路徑到達逃生出口,並給出逃生出口最少設定數量與方案數 多組資料 倒塌一座後 這一點令人想到割點 割點的倒塌會增加連通塊數量,產生隔斷 所以本題中顯然割點是比較重要的一種分析。先用tarjan跑出割點...

洛谷 P3225 HNOI2012 礦場搭建

煤礦工地可以看成是由隧道連線挖煤點組成的無向圖。為安全起見,希望在工地發生事故時所有挖煤點的工人都能有一條出路逃到救援出口處。於是礦主決定在某些挖煤點設立救援出口,使得無論哪乙個挖煤點坍塌之後,其他挖煤點的工人都有一條道路通向救援出口。請寫乙個程式,用來計算至少需要設定幾個救援出口,以及不同最少救援...