HDU 1272 小希的迷宮 (kruskal)

2021-07-16 21:05:27 字數 749 閱讀 9846

題目描述

整個檔案以兩個-1結尾。

5 6 0 0

8 1 7 3 6 2 8 9 7 5

7 4 7 8 7 6 0 0

3 8 6 8 6 4

5 3 5 6 5 2 0 0

-1 -1yes

no需要注意的是,他給出的點有可能構不成乙個連同的樹,而是兩個或者更多的連通分支,這樣也是不符合題意的。在判斷是否有多條路可以到達的某一點,用並查集來判斷,只需要找是否只有乙個祖父節點就行。

#include#include#define n 0x3f3f3f

int pre[100100],vis[100100];

int find (int x)

int union (int x,int y)

int main()

int max=-1,min=n;

memset(vis,0,sizeof(vis));

for(i=0; i<100100; i++)

pre[i]=i;

int f=0,count=0;

while(a||b)

{if(a>max) max=a;//找到所有點在的區間

if(b>max) max=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 ...