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

2021-06-13 23:06:59 字數 969 閱讀 2782

/**********************************

題目大意:把是房間之間有路的房間編碼放到一組,n個編碼可以分成幾組,並判斷是否滿足

條件一:任何兩個房間只能有一條路連線;條件二:所有房間之間都有路連線

題目解析:運用並查集把有關係的人合併到一組,最後遍歷陣列father[i],檢視i根結點是否為他自己;

錯誤分析:1. 初始化的函式init()中i#include#pragma comment(linker,"/stack:102400000,102400000")

//必須新增不然就會造成棧溢位;

#define m 100100

using namespace std;

int father[m];

//father[i]為i的父結點,rank[i]為i所屬集合的總元素數

void init()

//初始化,注意此時的函式init()有引數傳遞

}int find(int x)

//查詢根結點

int union(int x,int y,int rank1)

// 合併

return rank1;

}int main()

init();

rank1=0;rank2=0;

int sign[m]=;

sign[x]=sign[y]=1;

rank1=union(x,y,rank1);

while(scanf("%d %d",&x,&y),x!=0||y!=0)

for(i=1;i//判斷是否只有乙個根結點(即全部結點在乙個集合裡,才滿足題目條件之一)

if(rank1==0&&rank2==1)printf("yes\n");

//判斷兩個條件是否都滿足

else printf("no\n");

}return 0;

}

HDU ACM 1272 小希的迷宮 並查集

題目要求有兩個條件 1.在給定圖中無環 2.給定的圖有且僅有有1個連通分支 判斷環 在輸入時判斷點a點b是否有相同的根節點,有相同根節點再加一條直接連通的邊就有環.判斷連通分支數 判斷有幾個跟節點 if father i i view code 1 include 2 using namespace...

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