F 找朋友(裸並查集)

2022-05-22 19:09:09 字數 921 閱讀 2773

description

——你要是願意,我就永遠存在

某人的朋友圈實在是過於龐大且複雜,要判斷兩個人是不是朋友,那還真不容易。

現給出某個朋友圈關係圖,求任意給出的兩個人是否是朋友。

規定:如果x和yy是朋友,y和z是朋友,那麼x和z也是朋友。

如果x和y是朋友,那麼x的朋友都是y的朋友,y的朋友也都是x的朋友。

input

第一行:三個整數n,m,p,(n≤50000,m≤50000,p≤50000),分別表示有n個人,m個朋友關係,詢問p對朋友關係。

以下m行:每行兩個數mi​,mj​,1≤mi​,mj​≤n,表示mi​和mj​具有朋友關係。

接下來p行:每行兩個數pi​,pj​,詢問pi​和pj​是否具有朋友關係。

output

p行,每行乙個「yes」或「no」(不包含引號)。表示第i個詢問的答案為「具有」或「不具有」朋友關係。

sample input 1 

6 5 3

1 21 5

3 45 2

1 31 4

2 35 6

sample output 1

yes

yesno

裸的並查集,不知道為什麼那麼多人沒過。。。qaq
解法:裸的並查集的路徑壓縮或按秩合併

以下是ac**:

#include using

namespace

std;

const

int mac=5e4+10

;int

father[mac];

int find(int

x)int

main()

}for (int i=1; i<=p; i++)

return0;

}

找朋友並查集裸題

找朋友 並查集用來合併兩個不相交的集合 主要找根,需要路徑優化 合併的時候按秩合併 ac include using namespace std const int maxn 5e4 int parent maxn rank1 maxn int m,n,p struct frda maxn b ma...

並查集判環(裸

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

並查集 好朋友

天勤書上一道題,很簡潔的展現了並查集的思想。大致意思是x和y是和朋友,xx和yy是好朋友.要你分組使組內都是好朋友,組外都不是好朋友。資料量比較小,很水,路徑壓縮不考慮也沒問題。includeusing namespace std define max 200 int father max bool...