找朋友
並查集用來合併兩個不相交的集合
主要找根,需要路徑優化
合併的時候按秩合併
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中元素,那麼它們將組成乙個易爆的混合物。為了安全起見,每當你拿到乙個化合物時,如果它...