小鑫的城堡

2021-10-09 06:38:31 字數 1286 閱讀 8930

description

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

input

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

output

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

sample

input

52 5

2 31 3

3 64 6

61 2

1 33 4

3 55 6

6 4output

yesno

我的題目思路就是,把相鄰的房間歸入乙個並查集,但是當需要歸入的兩個房間有著相同的老大的時候,那麼就意味著出現了迴路。

題目有乙個稍微不太明顯的資訊。他說由m條邊,如果按照題目描述的連線方式,那麼就有m+1個房間。

也就是說,假如房間的數目大於m+1個,在並查集歸併的過程中是發現不出來的。

所以在程式最後面在看一下,房間的數量是不是m+1;

#include

#include

#include

int a[

100100

],b[

100100];

int f;

/* a陣列來進行並查集的合併,

b陣列來統計第i個房間有沒有出現過

*/void

chu(

)return;}

intgeta

(int v)

}int

main()

for(i=

1;i<

100100

;i++)if

(b[i]==1

) sum++;if

(f&&m==sum-1)

printf

("yes\n");

else

printf

("no\n");

}return0;

}

小鑫的城堡

提示 這個題主要是要求輸入的每乙個房間的根節點是同乙個 即只有乙個根節點 而且題目給定的通道數m和所需要的數l相等 l 出現房間的個數 乙個房間重複出現多次記為一次 1 include include int a 100005 儲存父根 int b 100005 儲存房間是否出現過 int find...

小鑫的城堡

sdutoj2798 time limit 1000ms memory limit 65536kb submit statistic problem description 從前有乙個國王,他叫小鑫。有一天,他想建一座城堡,於是,設計師給他設計了好多簡易圖紙,主要是房間的連通的圖紙。小鑫希望任意兩個...

小鑫的城堡

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