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 從前有乙個國王,他叫小鑫。有一天,他想建一座城堡,於是,設計師給他設計了好多簡易圖紙,主要是房間的連通的圖紙。小鑫希望任意兩個房間有且僅有一條路徑可以相通。小鑫現在把設計圖給你,讓你...