hdu1272 小希的迷宮 基礎並查集

2022-03-01 08:17:42 字數 1063 閱讀 8070

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;67

const

int m = 100005;8

inta, b;

9int father[m]; //

記錄父節點

10bool circle; //

判斷是否存在環

11bool visit[m]; //

用來記錄頂點數

12int edgenum, vnum; //

分別表示邊數,頂點數

1314

void

initial()

1521

22//

(查)23

int find(int

x)24

2728

//(並)

29void merge(int a, int

b)30

41else

42 circle = true; //

x==y,說明他們是同乙個祖先,一旦連通便與祖先3者成環 43}

4445

intmain()

4656

if (a == -1 && b == -1)57

break

;58 visit[a] = true

;59 visit[b] = true;60

merge(a, b);

61while (true)62

70for (int i = 0; i < m; i++)

7175

if (!circle && edgenum + 1 ==vnum)

76 printf("

yes\n");

77else

78 printf("

no\n");

79}80return0;

81 }

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 ...