HDU 1272 小希的迷宮 並查集判斷有無成環

2021-08-15 17:29:07 字數 1112 閱讀 4728

這是一道判斷有沒有成環的並查集的題,就是每兩個點要有唯一的路可到達。不太懂並查集的可以看一下這篇部落格傳送門。

說一下這道題的思路,首先要判斷有沒有成環的話,要先想清楚什麼時候會成環。

比如以這個圖為例,我們輸入1和2,1和3,2和4,3和4,當輸入完2和4的時候現在pre陣列裡有pre[2]=1,pre[3]=1,pre[4]=1,當再輸入3和4的時候,會發現3和4的根節點一樣,這就說明了出現了環,而在沒有成環的圖中,不會出現兩個點的根節點相同這種情況。

這道題在做的時候就要先判斷一下有沒有剛才所說的那種情況,有的話肯定是有環存在了,還有就是最後要計算一下根節點數,如果不為1的話,就說明這個圖是不連通的,所以也不符合題意。

ac**:

#include #include #include using namespace std;

const int maxn = 100005;

int pre[maxn];

bool vis[maxn];

int n,m,a,b,flag;

void init()

}int find(int x)

return pre[x];

}void merge(int x,int y)

else flag = 1; // 當出現有兩個點的根節點相同就會有環出現

}int main()

init();

flag = 0;

vis[n] = 1;

vis[m] = 1;

merge(n,m);

while(~scanf("%d%d",&a,&b))

if(flag)

else

if(sum == 1)printf("yes\n");

else printf("no\n");

}} return 0;

}

hdu 1272 小希的迷宮(並查集)

題意 略分析 由於是無向圖且是一棵樹,也就是n個節點,n 1條邊,題目要求是每個定點都是雙連通,也就是所有頂點都在乙個強連通分量裡面,這裡可以使用求ssc的演算法,但是由於十無向圖使用並查集的變成複雜度降低了很多,trick 0 0 no.code include include include i...

HDU 1272 小希的迷宮(並查集)

小希的迷宮 time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit go back status description 上次gardon的迷宮城堡小希玩了很久 見problem b 現在她也想設計乙個迷宮讓ga...

HDU1272 小希的迷宮 並查集

題目大意 給出乙個迷宮,如果他是連通的且沒有平行路徑,輸出yes,否則輸出no。並查集紀錄每個點的連通狀態,對於每輸入的兩個點,合併他們的同時,看他們是否有相同的父親,若有,則不符合題意。資料輸入完之後,再判斷一下根結點是否唯一便可知該迷宮是否連通了。include include include ...