洛谷 P3367 模板 並查集 題解

2021-09-26 07:33:22 字數 1164 閱讀 8914

題目描述

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

輸入輸出格式

輸入格式:

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

接下來m行,每行包含三個整數zi、xi、yi

當zi=1時,將xi與yi所在的集合合併

當zi=2時,輸出xi與yi是否在同一集合內,是的話輸出y;否則話輸出n

輸出格式:

如上,對於每乙個zi=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說明

時空限制:1000ms,128m

資料規模:

對於30%的資料,n<=10,m<=20;

對於70%的資料,n<=100,m<=1000;

對於100%的資料,n<=10000,m<=200000。

思路:並查集模板題。

並查集,在有n個元素的集合中,通常是在開始時讓每個元素構成乙個單元素的集合(即將i最高領導初始化為自己),然後按一定順序將屬於同一組的元素所在的集合合併(屬於同一集合的元素合併在一起),其間要反覆查詢乙個元素在哪個集合中。

**如下:

#include 

#include

#include

using namespace std;

const

int n=

1e6;

int n,m,zi,xi,yi;

int f[n]

;//表示乙個元素的上級

intfind

(int a)

intmain()

else

}return0;

}

並查集模板 洛谷P3367

並查集是一種樹型的資料結構,用於處理一些不相交集合 disjoint sets 的合併及查詢問題。常常在使用中以森林來表示。集就是讓每個元素構成乙個單元素的集合,也就是按一定順序將屬於同一組的元素所在的集合合併。初始化 把每個點所在集合初始化為其自身。通常來說,這個步驟在每次使用該資料結構時只需要執...

洛谷P3367 模板 並查集

如題,現在有乙個並查集,你需要完成合併和查詢操作。第一行包含兩個整數n m,表示共有n個元素和m個操作。接下來m行,每行包含三個整數zi xi yi 當zi 1時,將xi與yi所在的集合合併 當zi 2時,輸出xi與yi是否在同一集合內,是的話輸出y 否則話輸出n 如上,對於每乙個zi 2的操作,都...

洛谷P3367 模板 並查集

如題,現在有乙個並查集,你需要完成合併和查詢操作。輸入格式 第一行包含兩個整數n m,表示共有n個元素和m個操作。接下來m行,每行包含三個整數zi xi yi 當zi 1時,將xi與yi所在的集合合併 當zi 2時,輸出xi與yi是否在同一集合內,是的話輸出y 否則話輸出n 輸出格式 如上,對於每乙...