很久很久以前的一天,一位美男子來到海邊,海上狂風大作。美男子希望在海中找到美人魚,但是很不幸他只找到了章魚怪。
然而,在世界的另一端,人們正在積極的收集怪物的行為資訊,以便研製出強大的**來對付章魚怪。由於**的多發,以及惡劣的天氣,使得我們的衛星不能很好的定位怪物,從而不能很好的命中目標。第一次射擊的分析結果會反映在一張由n個點和m條邊組成的無向圖上。現在讓我們來確定這張圖是不是可以被認為是章魚怪。
為了簡單起見,我們假設章魚怪的形狀是這樣,他有乙個球形的身體,然後有很多觸鬚連線在他的身上。可以表現為一張無向圖,在圖中可以被認為由三棵或者更多的樹(代表觸鬚)組成,這些樹的根在圖中處在乙個環中(這個環代表球形身體)。
題目保證,在圖中沒有重複的邊,也沒有自環。
input單組測試資料
第一行給出兩個數,n表示圖中的點的個數,m表示圖中邊的數量。 (1≤ n≤100,0≤ m≤ n*(n-1)/2 )
接下來m行給出邊的資訊,
每一行有兩上數x,y (1≤ x,y≤ n,x≠y)
表示點x和點y之間有邊相連。每一對點最多有一條邊相連,點自身不會有邊到自己。output共一行,如果給定的圖被認為是章魚怪則輸出"fhtagn!"(沒有引號),否則輸出"no"(沒有引號)。sample input
6 6sample output6 36 4
5 12 5
1 45 4
fhtagn!其實這個題不太好理解。可以說每乙個點就相當於乙個觸鬚。而題目中所給出的邊就是說明兩個·觸鬚的根部(球形身體)有邊,組成乙個環(球形)。
理解上面這句話就好了,用並查集合並後:
1.必須只有乙個祖宗。否則有點沒連上,就不對了。
2.必須只有一條邊沒連上,(如果連上成環了),多的話,也不是只有乙個環(球形身體)了,不符合題意。
滿足以上兩點,其他的套用模板啦,,自己當時wa了·好多次,然後一直wa一直改,好長時間才想明白^_^。
**如下:
#includeint f[200];
int n,m;
int getf(int v)
}int merge(int v,int u)
return 0;
}int main()
int sum=0;
for(int i=1; i<=n; i++)
if(sum==1&&flag==1) //必須所有點都連上(乙個祖宗),且合併時只有一條邊連不上(否則形成的不是乙個環)
printf("fhtagn!\n");
else printf("no\n");
}return 0;
}
深海探險 51Nod 1535
很久很久以前的一天,一位美男子來到海邊,海上狂風大作。美男子希望在海中找到美人魚,但是很不幸他只找到了章魚怪。然而,在世界的另一端,人們正在積極的收集怪物的行為資訊,以便研製出強大的 來對付章魚怪。由於 的多發,以及惡劣的天氣,使得我們的衛星不能很好的定位怪物,從而不能很好的命中目標。第一次射擊的分...
A 深海探險 51Nod 1535
很久很久以前的一天,一位美男子來到海邊,海上狂風大作。美男子希望在海中找到美人魚,但是很不幸他只找到了章魚怪。然而,在世界的另一端,人們正在積極的收集怪物的行為資訊,以便研製出強大的 來對付章魚怪。由於 的多發,以及惡劣的天氣,使得我們的衛星不能很好的定位怪物,從而不能很好的命中目標。第一次射擊的分...
A 深海探險 51Nod 1535
很久很久以前的一天,一位美男子來到海邊,海上狂風大作。美男子希望在海中找到美人魚,但是很不幸他只找到了章魚怪。然而,在世界的另一端,人們正在積極的收集怪物的行為資訊,以便研製出強大的 來對付章魚怪。由於 的多發,以及惡劣的天氣,使得我們的衛星不能很好的定位怪物,從而不能很好的命中目標。第一次射擊的分...