SDUT2798 小鑫的城堡(並查集)

2021-08-04 14:42:56 字數 1322 閱讀 8180

time limit: 1000ms

memory limit: 65536kb

submit

statistic

discuss

problem description

從前有乙個國王,他叫小鑫。有一天,他想建一座城堡,於是,設計師給他設計了好多簡易圖紙,主要是房間的連通的圖紙。小鑫希望任意兩個房間有且僅有一條路徑可以相通。小鑫現在把設計圖給你,讓你幫忙判斷設計圖是否符合他的想法。比如下面的例子,第乙個是符合條件的,但是,第二個不符合,因為從5到4有兩條路徑(5-3-4和5-6-4)。

多組輸入,每組第一行包含乙個整數m(m < 100000),接下來m行,每行兩個整數,表示了一條通道連線的兩個房間的編號。房間的編號至少為1,且不超過100000。

output

每組資料輸出一行,如果該城堡符合小鑫的想法,那麼輸出"yes",否則輸出"no"。

example input

5

2 52 3

1 33 6

4 66

1 21 3

3 43 5

5 66 4

example output

yes

no

這是一道判斷是否為最小生成樹的問題。坑點在於題目中沒有明確指出節點的數量,第一發預設給出資料的最大值即為結點的數目,結果wa了。之後建了乙個標記陣列num,sum記錄所給結點的數目,最後遍歷這個陣列,非0的sum++,得到了結點的數目。其次在每次輸輸入時都要檢查兩個結點是否已經在同一集合中,之前設定了乙個標記變數flag,如果已經在同一集合中則令flag為false,後面只輸入即可了。最後的時候檢查一下sum是否等於邊的數目+1.

ac**:

# include

using namespace std;

const int maxn=1e5+10;

struct node

z[maxn];

int num[maxn];

void start()

} for(int i=1; i<=maxx; i++)

if(flag)

if(suy!=1)

flag=false;

if(t!=sum-1)

flag=false; }

if(flag)

cout<

SDUT 2798 小鑫的城堡(並查集應用)

從前有乙個國王,他叫小鑫。有一天,他想建一座城堡,於是,設計師給他設計了好多簡易圖紙,主要是房間的連通的圖紙。小鑫希望任意兩個房間有且僅有一條路徑可以相通。小鑫現在把設計圖給你,讓你幫忙判斷設計圖是否符合他的想法。比如下面的例子,第乙個是符合條件的,但是,第二個不符合,因為從5到4有兩條路徑 5 3...

並查集 小鑫的城堡

time limit 1000ms memory limit 65536k 從前有乙個國王,他叫小鑫。有一天,他想建一座城堡,於是,設計師給他設計了好多簡易圖紙,主要是房間的連通的圖紙。小鑫希望任意兩個房間有且僅有一條路徑可以相通。小鑫現在把設計圖給你,讓你幫忙判斷設計圖是否符合他的想法。比如下面的...

小鑫的城堡(並查集)

time limit 1000ms memory limit 65536k 有疑問?點這裡 從前有乙個國王,他叫小鑫。有一天,他想建一座城堡,於是,設計師給他設計了好多簡易圖紙,主要是房間的連通的圖紙。小鑫希望任意兩個房間有且僅有一條路徑可以相通。小鑫現在把設計圖給你,讓你幫忙判斷設計圖是否符合他的...