hdu1272 小希的迷宮

2021-06-22 21:10:33 字數 1093 閱讀 2562

題目大意:

小希設定了乙個圖,希望任意兩個頂點僅有一條路徑相通。

題目測試資料與資料範圍:

對於第一,二個圖符合設計要求,而第三個圖去到達5,或者8都有兩條路徑,所以不符合要求。房間的編號為至少 1,最大為 100000.

題目分折:

首先題目要求在她給出的圖中,任何兩個頂點有且只有一條路徑,那麼只能是乙個連通圖,而且不能有環。對於環的判定最先想到的是並查集當兩個頂點都已經在乙個集合之中,再加入這條邊的話,肯定會出現環。所以整個思路就是在輸入頂點時,記錄最小最大值,並標記出現的頂點。若在輸入過程中,並查過程中,沒有出現環,還得檢查這個圖是否只是乙個連通圖,否則輸出no。

小樂一下:

並查集的主要有兩個操作,乙個合併兩個集合,第二個查詢自己的祖先(在查詢的過程中就可以進行路徑壓縮),而啟發式合併一般不用,用了作用並不是很明顯。

**,更好更簡潔的由你來實現,不要直接複製。

#include#includeint father[100010];

int mark[100010];

int finds(int x)

void bing(int a,int b)

int main()

flag = 0;

for(i = 1;i<100010;i++) father[i] = i;

memset(mark,0,sizeof(mark));

maxs = -1;

mins = 99999999;

while(a||b){

if(a>maxs) maxs = a;

if(b>maxs) maxs = b;

if(a

HDU 1272 小希的迷宮

description 上次gardon的迷宮城堡小希玩了很久 見problem b 現在她也想設計乙個迷宮讓gardon來走。但是她設計迷宮的思路不一樣,首先她認為所有的通道都應該是雙向連通的,就是說如果有乙個通道連通了房間a和b,那麼既可以通過它從房間a走到房間b,也可以通過它從房間b走到房間a...

Hdu 1272 小希的迷宮

並查集 1.輸入的時候進行合併。當前讀入的兩個點如果屬於乙個集合,肯定輸出no。2.判斷一下是否有孤立點。3.當輸入0 0時,輸出yes。ac include include include include include using namespace std const int room 100...

hdu 1272 小希的迷宮

並查集判斷給出的圖是否是樹 判斷是否有環 未給出點數判斷集合數是否大於1 判斷有環 若輸入兩點的根相同則有環 判斷所有點是否都在同一集合內 合併過程中把出現的點都標記,把最小和最大的找到,列舉在該範圍內的點,看有幾個根,有幾個根就有幾個集合。include include includeusing ...