2017藍橋杯模擬 風險度量(並查集)

2021-07-30 04:59:54 字數 1019 閱讀 6124

x星系的的防衛體系包含 n 個空間站。這 n 個空間站間有 m 條通訊鏈路,構成通訊網。

兩個空間站間可能直接通訊,也可能通過其它空間站中轉。

對於兩個站點x和y (x != y), 如果能找到乙個站點z,使得:

當z被破壞後,x和y無法通訊,則稱z為關於x,y的關鍵站點。

顯然,對於給定的兩個站點,關於它們的關鍵點的個數越多,通訊風險越大。

你的任務是:已知網路結構,求兩站點之間的通訊風險度,即:它們之間的關鍵點的個數。

輸入資料第一行包含2個整數n(2 <= n <= 1000), m(0 <= m <= 2000),分別代表站點數,鏈路數。

空間站的編號從1到n。通訊鏈路用其兩端的站點編號表示。

接下來m行,每行兩個整數 u,v (1 <= u, v <= n; u != v)代表一條鏈路。

最後1行,兩個數u,v,代表被詢問通訊風險度的兩個站點。

輸出:乙個整數,如果詢問的兩點不連通則輸出-1.

例如:使用者輸入:

7 61 3 2 3

3 4 3 5

4 5 5 6

1 6則程式應該輸出:

2資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗  < 2000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。

所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。

提交程式時,注意選擇所期望的語言型別和編譯器型別。

分析:並查集,是一種管理元素分組情況的資料結構

(1)查詢元素所在組別,兩個元素是否屬於同一組

(2) 如果不在同一組,說明不連通,合併到同一組

#includeint fd[1005],sum=0,s[2005][2];

int find(int x)//並查集,查詢是否在同一組

int main()

{ int m,n,i,j,k1,k2,k;

scanf("%d%d",&n,&m);

for(i=0; i

藍橋杯 風險度量 dfs

x星系的的防衛體系包含 n 個空間站。這 n 個空間站間有 m 條通訊鏈路,構成通訊網。兩個空間站間可能直接通訊,也可能通過其它空間站中轉。對於兩個站點x和y x y 如果能找到乙個站點z,使得 當z被破壞後,x和y無法通訊,則稱z為關於x,y的關鍵站點。顯然,對於給定的兩個站點,關於它們的關鍵點的...

2017藍橋杯模擬賽風險測量

includeusing namespace std int count 0 int a 100 100 int b 100 100 int n 7 int m 6 int v 10 int flag 0 void dfs int num for int i 1 i 7 i int main a 1...

風險度量 廣搜,並查集)

x星系的的防衛體系包含 n 個空間站。這 n 個空間站間有 m 條通訊鏈路,構成通訊網。兩個空間站間可能直接通訊,也可能通過其它空間站中轉。對於兩個站點x和y x y 如果能找到乙個站點z,使得 當z被破壞後,x和y無法通訊,則稱z為關於x,y的關鍵站點。顯然,對於給定的兩個站點,關於它們的關鍵點的...