並查集(模板)
(luogu 3367)
模板如下:
#include <bits/stdc++.h> #define ll long long #define N 10005 using namespace std; int fa[N]; int findf(int x) { if(x==fa[x]) return x; return fa[x]=findf(fa[x]); } int main() { int n,m; scanf("%d%d",&n,&m); for(int i = 1;i <= n;i++) { fa[i]=i; } for(int i = 1;i <= m;i++) { int z,x,y; scanf("%d%d%d",&z,&x,&y); int t1=findf(x); int t2=findf(y); if(z==1) { if(t1!=t2) fa[t1]=t2; }else if(z==2) { if(t1==t2) puts("Y"); else puts("N"); } } return 0 ; }
相關推薦
並查集(模板)
(luogu 3367) 模板如下: #include <bits/stdc++.h> #define ll long long #define N 10005 using namespace std; int fa[N]; int findf(int x) { if(x=
並查集(模板&典型例題整理)
並查集,並查集是一種樹形結構,又叫“不相交集合”,保持了一組不相交的動態集合,每個集合通過一個代表來識別,代表即集合中的某個成員,通常選擇根做這個代表。 也就是說,並查集是用來處理不相交集合型別問題,如問不相交集合有幾個。給定節點,找到該節點所在集合元素個數,
並查集(UnionFind)
為什麼引入並查集 並查集的引入是為了解決動態連通問題。在動態連通場景中解決給定的兩節點,判斷它們是否連通,如果連通,不需要給出具體路徑。(而對於要給出具體路徑的問題可以採用DFS). 什麼是並查集 在電腦科學中,並查集是一種樹型的資料結構,其保持著用於處理一些不相交集合(Di
並查集(等式)
等式 描述 有n個變數和m個“相等”或“不相等”的約束條件,請你判定是否存在一種賦值方案滿足所有m個約束條件。 輸入 第一行一個整數T,表示資料組數。 接下來會有T組資料,對於每組資料: 第一行是兩個整數n,m,表示變數個數和約束條件的個數。 接下來m行,每行三
可持久化並查集(三)——從動態到可持久化
中已經可以算是一個偽可持久化了,但是對於歷史查詢等操作無能為力。。所以本篇重點介紹可持久化操作 BZOJ 3673 題目連線 這題不知道出題人什麼做法,但是程式碼很短的樣子 UPD:出題人用的是rope,即stl中的可持久化
並查集與帶權並查集(轉)
並查集 並查集是一個很高效演算法,理解起來也很簡單,寫起來更簡單。 ①fat[i] = i; ②找到一個點的祖先 int findfat(int x) { if(fat[x] == x) return x; return fi
並查集(親戚)
#include<iostream>using namespace std;int N ;int parent[100]; void UFset() //初始化{for(int i = 0;i < N;i++) parent[i]=-1;} int
NOJ-1593:並查集(一)-西工大演算法
#include <stdio.h> #include <stdlib.h> int n, m; int p[1005]; int find(int i); int m
可持久化並查集(外傳)——[按秩啟發式合併]
重新開坑 奉上最近覺得的神作(至少從小說與這首曲子來說是這樣的)。 之前寫到過可持久化並查集三部曲,現在想來,唯獨沒有提到按秩合併,在研習了啟發式合併後,決定重新為並查集寫一份外傳,記錄並查集的另一作用。 什麼是按秩合併,就小編來看,其實就是啟發式合併
數據結構_並查集(轉載)
target blog 隨機 輸出 無法 增加 輸出結果 還需 class 一、問題引入 原題:杭電hdu1232暢通工程 題意:首先在地圖上給你若幹個城鎮,這些城鎮都可以看作點,然後告訴你哪些對城鎮之間是有道路直接相連的。最後要解決的是整幅圖的連通性問題。比如隨意給
並查集(UnionFind)技巧總結
## 什麼是並查集 在電腦科學中,並查集是一種樹型的資料結構,用於處理一些不交集(Disjoint Sets)的合併及查詢問題。有一個聯合-查詢演算法(Union-find Algorithm)定義了兩個用於此資料結構的操作: - Find:確定元素屬於哪一個子集。它可以被用來確定兩個元素是否屬於同一子集
洛谷P3402 【模板】可持久化並查集(可持久化線段樹,線段樹)
std 樹節點 https case 深度 build eof spa 復雜度 orz TPLY 巨佬,題解講的挺好的。 這裏重點梳理一下思路,做一個小小的補充吧。 寫可持久化線段樹,葉子節點維護每個位置的fa,利用每次只更新一個節點的特性,每次插入\(logN\)個節點,
【模板】並查集(洛谷P3367)
Description 如題,現在有一個並查集,你需要完成合並和查詢操作。 Input 第一行包含兩個整數\(N\)、\(M\),表示共有\(N\)個元素和\(M\)個操作。 接下來M行,每行包含三個整數\(opt\)、\(a\)、\(b\) 當\(opt=1\)時,將\(a\)與\(b
How Many Tables (並查集裸模板題)
Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius wants to know how many tables he needs at least. You have t
uvalive 4730王國kingdom(並查集+線段樹)
[0 ++ char == tac sum data 操作 input ?? 題意:有T組測試數據。每組數據的N表示有N個城市,接下來的N行裏每行給出每一個城市的坐標(0<=x,y<=1000000),然後有M(1<M<200000)個操作,操作
(並查集狀態壓縮)CodeForces - 469D Two Sets
queue == 劃分 查詢 sample 在那 des elong equal Little X has n distinct integers: p1,?p2,?...,?pn. He wants to divide all of them into two sets
POJ 1988 Cube Stacking(並查集+路徑壓縮)
trac ref nio space == using n) scan 累加 題目鏈接:id=1988">POJ 1988 Cube Stacking 並查集的題目 【題目大意】 有n個元素,開始每一個元素自己 一棧。有兩種操作,將含有元素
HDU 1198 Farm Irrigation(並查集+位運算)
another org des clas accepted som using red wan Farm Irrigation Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java
Knight Tournament 偽並查集(區間合並)
rst hat put cif after line spec class std Knight Tournament Hooray! Berl II, the king of Berland is making a knight tournament. The kin
hdu 2473(並查集刪除點)
algo 一起 open users ems scanf blog spa freopen 題目連接: 題意:給定n個點m次操作,有兩種操作,M a b 操作是將a b合並到一起,S a 操作是從a所在的集合中刪除a點,所有的操作結束後輸出集合的個數。 題解:用並查集。刪除