並查集(模板)

2021-10-06 06:52:16 字數 2726 閱讀 8801

並查集(合併,查詢,集合)

1.題目描述

如題,現在有乙個並查集,你需要完成合併和查詢操作。

輸入格式

第一行包含兩個整數 n,mn,m ,表示共有 nn 個元素和 mm 個操作。

接下來 mm 行,每行包含三個整數 z_i,x_i,y_izi​

,xi​ ,yi​

。當 z_i=1zi​

=1 時,將 x_ixi​

與 y_iyi​

所在的集合合併。

當 z_i=2zi​

=2 時,輸出 x_ixi​

與 y_iyi​

是否在同一集合內,是的輸出 y ;否則輸出 n 。

輸出格式

對於每乙個 z_i=2zi​

=2 的操作,都有一行輸出,每行包含乙個大寫字母,為 y 或者 n 。

輸入輸出樣例

輸入 #1複製

4 72 1 2

1 1 2

2 1 2

1 3 4

2 1 4

1 2 3

2 1 4

輸出 #1複製ny

ny說明/提示

對於 30%30% 的資料,n \le 10n≤10,m \le 20m≤20 。

對於 70%70% 的資料,n \le 100n≤100,m \le 10^3m≤103。

對於 100%100% 的資料,1\le n \le 10^41≤n≤10

4,1\le m \le 2\times 10^51≤m≤2×105。

#include

using

namespace std;

int fa[

10005];

intfind

(int x)

return fa[x]

=find

(fa[x]);

}int

main()

int z, x ,y;

while

(m--

)else

else}}

return0;

}

2.社交集群

當你在社交網路平台註冊時,一般總是被要求填寫你的個人興趣愛好,以便找到具有相同興趣愛好的潛在的朋友。乙個「社交集群」是指部分興趣愛好相同的人的集合。你需要找出所有的社交集群。

輸入格式:

輸入在第一行給出乙個正整數 n(≤1000),為社交網路平台註冊的所有使用者的人數。於是這些人從 1 到 n 編號。隨後 n 行,每行按以下格式給出乙個人的興趣愛好列表:

k​i: h​i[1] h​i[2] … h​i[k​i]

其中k​i​​ (>0)是興趣愛好的個數,h​i[j]是第j個興趣愛好的編號,為區間 [1, 1000] 內的整數。

輸出格式:

首先在一行中輸出不同的社交集群的個數。隨後第二行按非增序輸出每個集群中的人數。數字間以乙個空格分隔,行末不得有多餘空格。

輸入樣例:

83: 2 7 10

1: 4

2: 5 3

1: 4

1: 3

1: 4

4: 6 8 1 5

1: 4

輸出樣例:

34 3 1

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

int fa[

1001];

bool

cmp(

int a,

int b)

//查詢根結點

intfind

(int x)

return fa[x]

=find

(fa[x]);

}//集合

void

join

(int x,

int y)

}int

main()

int n;

scanf

("%d"

,&n)

;int a[

1001];

for(

int i =

0; i < n; i++)}

//到此已得n個集合

map<

int,

int> mp;

for(

int i =

0; i < n; i++

)//相同特徵集合計數

int b[

1001

], j =0;

for(map<

int,

int>

::iterator it = mp.

begin()

; it != mp.

end(

); it++

)sort

(b, b+j, cmp)

;printf

("%d\n"

, j)

;for

(int i =

0; i < j; i++

)printf

("%d"

, b[i]);

}printf

("\n");

return0;

}

並查集模板

來自lifeng wang http hi.baidu.com fandywang jlu 前輩06年寫的東西,追隨前人足跡繼續努力。並查集的一些題目和相關解題報告 poj 1611 the suspects 最基礎的並查集 poj 2524 ubiquitous religions 最基本的並查集...

並查集模板

普通並查集 define max size 100005 int pa max size 儲存有向圖的邊 void init 初始化 該函式可以根據具體情況儲存和初始化需要的內容 int findset int a 不帶路勁壓縮 return a void union nodes int a,int...

並查集模板

codevs 2597 團夥 題目描述 description 1920年的芝加哥,出現了一群強盜。如果兩個強盜遇上了,那麼他們要麼是朋友,要麼是敵人。而且有一點是肯定的,就是 我朋友的朋友是我的朋友 我敵人的敵人也是我的朋友。兩個強盜是同一團夥的條件是當且僅當他們是朋友。現在給你一些關於強盜們的資...