點雙連通分量 HNOI2012 礦場搭建

2021-08-06 02:32:19 字數 2092 閱讀 3767

時間限制: 1 sec  記憶體限制: 128 mb

煤礦工地可以看成是由隧道連線挖煤點組成的無向圖。為安全起見,希望在工地發生事故

時所有挖煤點的工人都能有一條出路逃到救援出口處。於是礦主決定在某些挖煤點設立救援出

口,使得無論哪乙個挖煤點坍塌之後,其他挖煤點的工人都有一條道路通向救援出口。

請寫乙個程式,用來計算至少需要設定幾個救援出口,以及不同最少救援出口的設定方案總數。

輸入檔案有若干組資料,每組資料的第一行是乙個正整數n(

n≤500

),表示工地的隧道數,接下來的

n 行每行是用空格隔開的兩個整數s 和

t,表示挖

s 與挖煤點

t 由隧道直接連線。輸入資料以

0 結尾。

輸入檔案中有多少組資料,輸出檔案

output.txt 

中就有多少行。每行對應一組輸入資料的

結果。其中第

i 行以

case i: 

開始(注意大小寫,

case 與i 

之間有空格,i 與

:之間無空格,

: 之後有空格),其後是用空格隔開的兩個正整數,第乙個正整數表示對於第

i 組輸入資料至少需

要設定幾個救援出口,第二個正整數表示對於第

i 組輸入資料不同最少救援出口的設定方案總

數。輸入資料保證答案小於

2^64

。輸出格式參照以下輸入輸出樣例。

9                       1  3                     4  13  51  22  61  56  31  63  26 1  21  32  42  53  63  70
case 1: 2 4case 2: 4 1
case 1 

的四組解分別是

(2,4),(3,4),(4,5),(4,6);

用到了點雙連通分量,定義是這個連通塊通過割點與其它塊分開,而割點一旦去掉整個塊就不連通了,那麼也就和這道題扯上了關係。對於乙個點雙連通分量,如果他只有乙個割點,那他必須建乙個(在非割點),不然割點塌了這個點雙連通分量就毀了。。如果有兩個以上割點,不用建,因為就算乙個割點塌了,還可以通過另乙個跑掉(狡兔三窟~),也對於沒有割點的(就是自己只連自己)必須建兩個,如果碰巧你建的點塌了,就又毀掉了。。

那麼就很明確了。只是到底有多少種方法求點雙連通分量,我也不知道,但貌似一人一種。。

#include#include#include#include#include#include#define n 500

#define ll long long

using namespace std;

struct node

lu[n*2+5];

int zhan[n*2+5];

int dfn[n*2+5],low[n*2+5],belong[n*2+5];

int n,m,adj[n*2+5],e,cnt,ji,head;

ll ans2=1,ans1=0;

void add(int u,int v)

void init()

void tarjin(int x) }}

void dfs(int x)

t=x;

if(belong[t]>=2)temp++;

++size;

if(!temp)

ans1+=2,ans2*=size*(size-1)/2;

else if(temp==1)

ans1++,ans2*=size-1;

}} }

}int yjn()

for(int i=1;i<=n;i++)

if(!dfn[i])

tarjin(i);

else

belong[i]++;

memset(dfn,0,sizeof(dfn));

ji=0;

for(int i=1;i<=n;i++)

if(!dfn[i])

dfs(i);

cout<<"case "

int main()

雙連通分量

在無向連通圖中,如果刪除該圖的任何乙個結點都不能改變該圖的連通性,則稱該圖是雙連通的。雙連通無向圖一定是連通的,而連通的無向圖則不一定是雙連通的。對於乙個連通的無向圖也有雙連通分量的概念,定義自然不言而喻。同樣,我們也可以利用tarjan演算法求雙連通分量。define n 10000 struct...

雙連通分量

在乙個無向連通圖中,如果任意去掉乙個定點i及依附於i的所有邊後得到的圖仍然連通,則稱該圖為 2 連通圖 否則,若得到多個連通分量,則該圖不是雙連通的,頂點i被稱為 割點 簡單的說,在雙連通圖中,任何一對頂點都至少存在兩條路徑可以互相到達。圖的連通 性不會任何乙個頂點的影響。這個性質具有許多重要的應用...

雙連通分量

雙連通分量就是無向圖中的強連通分量,基本就是找割頂和橋。割頂就是乙個點,如果把它取掉,連通分量數量就會增加,橋就是一條邊,同理。對於乙個連通圖,如果任意兩點至少存在兩條 點不重複 的路徑,也就是任意兩條邊都在乙個簡單環中,即內部無割頂,則說這個圖是點雙連通的。對於乙個連通圖,如果任意兩點至少存在兩條...