51nod 1535 深海探险【思维+并查集】
很久很久以前的一天,一位美男子來(lái)到海邊,海上狂風(fēng)大作。美男子希望在海中找到美人魚(yú),但是很不幸他只找到了章魚(yú)怪。
?
然而,在世界的另一端,人們正在積極的收集怪物的行為信息,以便研制出強(qiáng)大的武器來(lái)對(duì)付章魚(yú)怪。由于地震的多發(fā),以及惡劣的天氣,使得我們的衛(wèi)星不能很好的定位怪物,從而不能很好的命中目標(biāo)。第一次射擊的分析結(jié)果會(huì)反映在一張由n個(gè)點(diǎn)和m條邊組成的無(wú)向圖上。現(xiàn)在讓我們來(lái)確定這張圖是不是可以被認(rèn)為是章魚(yú)怪。
?
為了簡(jiǎn)單起見(jiàn),我們假設(shè)章魚(yú)怪的形狀是這樣,他有一個(gè)球形的身體,然后有很多觸須連接在他的身上。可以表現(xiàn)為一張無(wú)向圖,在圖中可以被認(rèn)為由三棵或者更多的樹(shù)(代表觸須)組成,這些樹(shù)的根在圖中處在一個(gè)環(huán)中(這個(gè)環(huán)代表球形身體)。
?
題目保證,在圖中沒(méi)有重復(fù)的邊,也沒(méi)有自環(huán)。
Input 單組測(cè)試數(shù)據(jù) 第一行給出兩個(gè)數(shù),n表示圖中的點(diǎn)的個(gè)數(shù),m表示圖中邊的數(shù)量。?(1≤?n≤100,0≤?m≤?n*(n-1)/2?) 接下來(lái)m行給出邊的信息, 每一行有兩上數(shù)x,y??(1≤?x,y≤?n,x≠y) 表示點(diǎn)x和點(diǎn)y之間有邊相連。每一對(duì)點(diǎn)最多有一條邊相連,點(diǎn)自身不會(huì)有邊到自己。 Output 共一行,如果給定的圖被認(rèn)為是章魚(yú)怪則輸出"FHTAGN!"(沒(méi)有引號(hào)),否則輸出"NO"(沒(méi)有引號(hào))。 Input示例 6?6 6?3 6?4 5?1 2?5 1?4 5?4 Output示例 FHTAGN!
思路:
1、通過(guò)仔細(xì)讀題我們能夠知道,這個(gè)題就是在讓你判斷一個(gè)無(wú)向圖,是否只包含一個(gè)環(huán)&&是一個(gè)連通圖。
2、那么對(duì)于連通圖的判定以及環(huán)的個(gè)數(shù)的判定,我們其實(shí)都可以通過(guò)并查集來(lái)搞定。一開(kāi)始無(wú)腦想著去Dfs.而且點(diǎn)數(shù)也不多,細(xì)心想想其實(shí)不必要Dfs.我們并查集直接判斷即可。
對(duì)于兩個(gè)點(diǎn),如果其在一個(gè)集合中了已經(jīng),那么這個(gè)邊一定是成環(huán)邊,對(duì)于成環(huán)邊的個(gè)數(shù)進(jìn)行判定,只有這種邊的個(gè)數(shù)為1的時(shí)候,并且他是一個(gè)連通圖的時(shí)候,才能判斷他是一條章魚(yú)。
Ac代碼:
總結(jié)
以上是生活随笔為你收集整理的51nod 1535 深海探险【思维+并查集】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 等价性梳理
- 下一篇: 3分钟掌握7个XD基础操作