找朋友並查集裸題

2021-10-06 09:38:24 字數 689 閱讀 7412

找朋友

並查集用來合併兩個不相交的集合

主要找根,需要路徑優化

合併的時候按秩合併

ac**

#include

using

namespace std;

const

int maxn=

5e4;

int parent[maxn]

,rank1[maxn]

;int m,n,p;

struct frda[maxn]

,b[maxn]

;//找根

intfind_root

(int l,

int parent)

return l_root;

}//合併

intunion

(int l ,

int r,

int parent,

int rank1)

else

if(rank1[x_root]

)else

}return1;

}//判斷新來的是否是有乙個祖先

bool

judge

(int l ,

int r)

intmain()

for(

int i=

0;i)}

F 找朋友(裸並查集)

description 你要是願意,我就永遠存在 某人的朋友圈實在是過於龐大且複雜,要判斷兩個人是不是朋友,那還真不容易。現給出某個朋友圈關係圖,求任意給出的兩個人是否是朋友。規定 如果x和yy是朋友,y和z是朋友,那麼x和z也是朋友。如果x和y是朋友,那麼x的朋友都是y的朋友,y的朋友也都是x的朋...

暢通工程 並查集入門裸題

某省調查城鎮交通狀況,得到現有城鎮道路統計表,表中列出了每條道路直接連通的城鎮。省 暢通工程 的目標是使全省任何兩個城鎮間都可以實現交通 但不一定有直接的道路相連,只要互相間接通過道路可達即可 問最少還需要建設多少條道路?測試輸入包含若干測試用例。每個測試用例的第1行給出兩個正整數,分別是城鎮數目n...

並查集判環(裸

題目大意 有一些化合物,每個化合物都由兩種元素組成的 每個元素用乙個大寫字母表示 你是乙個裝箱的工人,從實驗員那裡按照順序依次把一些簡單化合物裝到車上。但這裡存在乙個安全隱患 如果車上存在k個簡單的化合物,正好包含k中元素,那麼它們將組成乙個易爆的混合物。為了安全起見,每當你拿到乙個化合物時,如果它...