【問題描述】
有一座地下的稀有金屬礦由n條隧道和一些連線點組成,其中每條隧道連線兩個點。任意兩個連線點之間最多只有一條隧道。為了降低礦工的危險,你的任務是在一些連線點處安裝太平井和相應的逃生裝置,使得不管那些連線點倒塌,不在次連線點的所有礦工都能到達太平井逃生(假定除了倒塌的連線點不能通行外,其他隧道和連線點完好無損)。為了節約成本,你應該在盡量少的連線點安裝太平井。還需要計算出當太平井的數目和最小時的安裝方案總數。
【輸入格式】
輸入包含多組資料,每組資料第一行為隧道條數n(n<=50000),以下n行每行兩個整數,即一條隧道兩端的連線點編號(所有點從1開始編號)。每組資料的所有連線點保證連通。
【輸出格式】
對於每組資料,輸出兩個整數,即最少需要安裝的太平井數量以及對應的方案總數。方案總數保證在64位帶符號整數範圍內。
【輸入樣例】
91 3
4 13 5
1 22 6
1 56 3
1 63 2
6 1 2
1 32 4
2 53 6
3 7【輸出樣例】
2 44 1
【資料範圍】
n<=50000
每測試點最多不超過10組資料。
1.可以看出這個題基本的要求點雙聯通分量;
2.題目等價於:如果修乙個太平井是塗乙個黑點,那麼刪掉任意乙個點後,每個連通分量至少有乙個黑點;
3.把割頂塗黑是不划算的,因為乙個割頂往往連線多個分量,如果刪了割頂,多個分量都可能沒有黑點;
4.如果乙個連通分量只有乙個割頂,若分量內沒有黑點,而是通過割頂到其他的黑點,那麼刪掉這個割頂後,分量就連不到黑點。所以只有乙個割頂的分量至少要塗乙個,塗非割頂即可;
5.類似,如果乙個分量有多個割頂,刪掉任意乙個總可以通過其他的割頂到達黑點,故不需要塗黑;
6.特殊情況:整個圖沒有割頂,只需要塗兩個點;
7.計數運用乘法原理;
**寫得醜別介意:
#include#include#include#includeusing namespace std;
const int maxn=50005;
int m,np,np2,time=0,last[maxn],last2[maxn];
struct edgee[maxn*2];
struct data;
struct myvectorbcc[maxn*2];//存每個連通分量的點
char c;
void qkscanf(int &x)
void addedge(int u,int v,int id)
; last[u]=np;
}int bcc_cnt;
void push_bcc(int num)
; last2[bcc_cnt]=np2;
}int dfs_clock=0,top=0,stk[maxn+10005],cut[maxn];//說明:陣列用結構體,是為了少用幾次memset,請無視
data dfn[maxn],low[maxn];//dfn時間戳,low能返回的最早的點的時間戳
void dfs(int i,int fd)
; int chd=0;
stk[++top]=i;
for(int p=last[i];p;p=e[p].pre)}}
if(chd==1&&fd==0) cut[i]=0;//應該是很熟悉的結論了
}void init()
int main()
dfs(1,0);//求出連通分量
long long ans1=0,ans2=1;
int sz;
for(int i=1;i<=bcc_cnt;i++)
//計算第i個連通分量裡有多少個割點
if(cut_cnt==1)//引用結論
}if(bcc_cnt==1)//引用結論
printf("%lld %lld\n",ans1,ans2); }
return 0;
}
點 邊 雙聯通分量1 1
點 include include include include include includeusing namespace std const int maxn 1000 10 int n,m int bcc cnt int dfs clock bcc cnt計數一共有多少個點 雙連通分量 i...
邊雙聯通分量
首先什麼是邊雙聯通分量?邊雙連通分量是指,在 無向圖 中刪除任意一條邊依舊聯通的聯通塊 之前講過強連通分量,這裡邊雙聯通分量的做法也需要利用tarjan演算法獲得邊雙聯通分量。對於邊雙聯通分量中還有乙個概念,就是橋。橋指的是 刪除該邊圖不再連通。對應的另乙個概念是 割點 割點的的是 如果除去此節點和...
邊雙聯通分量
noip最後一次學習 敲板子 橋 如果這條邊去掉後圖的聯通分量增加,則這條邊稱為橋。邊雙聯通分量 如果乙個對於乙個圖的某個子圖,任意兩點至少存在兩條 邊不重複 的路徑,則這個子圖是邊雙聯通分量。很顯然,任意乙個邊雙中不含有橋。除橋外每條邊都僅屬於乙個邊雙。如果把原圖中所有橋刪除,每個聯通分量都是原圖...