【并查集】P3367 【模板】并查集

P3367 【模板】并查集

題目背景

本題數據范圍已經更新到 1≤N≤2×1051\le N\le 2\times 10^51N2×1051≤M≤1061\le M\le 10^61M106

題目描述

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

輸入格式

第一行包含兩個整數 N,MN,MN,M ,表示共有 NNN 個元素和 MMM 個操作。

接下來 MMM 行,每行包含三個整數 Zi,Xi,YiZ_i,X_i,Y_iZi?,Xi?,Yi?

Zi=1Z_i=1Zi?=1 時,將 XiX_iXi?YiY_iYi? 所在的集合合并。

Zi=2Z_i=2Zi?=2 時,輸出 XiX_iXi?YiY_iYi? 是否在同一集合內,是的輸出
Y ;否則輸出 N

輸出格式

對于每一個 Zi=2Z_i=2Zi?=2 的操作,都有一行輸出,每行包含一個大寫字母,為 Y 或者 N

輸入輸出樣例 #1

輸入 #1

4 7
2 1 2
1 1 2
2 1 2
1 3 4
2 1 4
1 2 3
2 1 4

輸出 #1

N
Y
N
Y

說明/提示

對于 15%15\%15% 的數據,N≤10N \le 10N10M≤20M \le 20M20

對于 35%35\%35% 的數據,N≤100N \le 100N100M≤103M \le 10^3M103

對于 50%50\%50% 的數據,1≤N≤1041\le N \le 10^41N1041≤M≤2×1051\le M \le 2\times 10^51M2×105

對于 100%100\%100% 的數據,1≤N≤2×1051\le N\le 2\times 10^51N2×1051≤M≤1061\le M\le 10^61M1061≤Xi,Yi≤N1 \le X_i, Y_i \le N1Xi?,Yi?NZi∈{1,2}Z_i \in \{ 1, 2 \}Zi?{1,2}

代碼

并查集模板

數據結構

  1. parent[i]:記錄結點i的父結點
  2. rank[i]:以i為根的集合的高度

初始化

void init(){for(int i=1;i<=n;i++){Rank[i]=1;parent[i]=i;}
}

查詢

int find(int x){if(parent[x]!=x)parent[x]=find(parent[x]);return parent[x];
}

合并

void Union(int x,int y){int rootx=find(x);int rooty=find(y);if(rootx==rooty)return;if(Rank[rootx]>Rank[rooty]){parent[rooty]=rootx;}else if(Rank[rootx]<Rank[rooty]){parent[rootx]=rooty;}else{parent[rooty]=rootx;Rank[rootx]++;}
}

完整代碼

#include<bits/stdc++.h>
using namespace std;
int n, m;
int parent[200005];
int Rank[200005];
void init(){for(int i=1;i<=n;i++){Rank[i]=1;parent[i]=i;}
}
int find(int x){if(parent[x]!=x)parent[x]=find(parent[x]);return parent[x];
}
void Union(int x,int y){int rootx=find(x);int rooty=find(y);if(rootx==rooty)return;if(Rank[rootx]>Rank[rooty]){parent[rooty]=rootx;}else if(Rank[rootx]<Rank[rooty]){parent[rootx]=rooty;}else{parent[rooty]=rootx;Rank[rootx]++;}
}
int main(){cin>>n>>m;init();int x,y,z;for(int i=0;i<m;i++){cin>>z>>x>>y;if(z==1){Union(x, y);}else{if(find(x)==find(y))cout<<"Y"<<endl;elsecout<<"N"<<endl;}}return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92599.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92599.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92599.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MyBatis流式查詢詳解

MyBatis 流式查詢詳解&#xff1a;ResultHandler 與 Cursor 在業務中&#xff0c;如果一次性查詢出百萬級數據并返回 List&#xff0c;很容易造成 OOM 或 長時間 GC。 MyBatis 提供了 流式查詢&#xff08;Streaming Query&#xff09; 能力&#xff0c;讓我們可以邊讀邊處理&a…

1Panel Agent 證書繞過實現遠程命令執行漏洞復現(CVE-2025-54424)

免責申明: 本文所描述的漏洞及其復現步驟僅供網絡安全研究與教育目的使用。任何人不得將本文提供的信息用于非法目的或未經授權的系統測試。作者不對任何由于使用本文信息而導致的直接或間接損害承擔責任。如涉及侵權,請及時與我們聯系,我們將盡快處理并刪除相關內容。 前…

kettle插件-kettle http post plus插件,輕松解決https post接口無法調用文件流下載問題

場景&#xff1a;小伙伴在使用kettle調用https post接口過程中無法正常調用&#xff0c;程序出錯問題&#xff0c;今天演示下用自研插件輕松解決這個問題。1、使用openssl 生成自簽名證書openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 3652、…

劍指offer第2版——面試題2:實現單例

文章目錄一、題目二、考察點三、答案3.1 C11寫法3.2 C98寫法&#xff08;線程安全只存在于懶漢模式&#xff09;3.2.1 小菜寫法3.2.2 小菜進階寫法3.2.3 中登寫法3.2.3 老鳥寫法四、擴展知識4.1 餓漢模式和懶漢模式的區別4.1.1 餓漢模式&#xff08;Eager Initialization&#…

OpenAI開源大模型gpt-oss系列深度解析:從120B生產級到20B桌面級應用指南

引言&#xff1a;OpenAI開源里程碑&#xff0c;AI民主化加速到來 2025年8月&#xff0c;OpenAI正式宣布開源其兩款重磅大語言模型——gpt-oss-120b&#xff08;1200億參數生產級模型&#xff09;和gpt-oss-20b&#xff08;200億參數桌面級模型&#xff09;&#xff0c;引發全球…

本地部署文檔管理平臺 BookStack 并實現外部訪問( Windows 版本)

BookStack 是一款專注于書籍、文檔管理的開源平臺&#xff0c;它界面設計直觀簡潔&#xff0c;功能強大且易于使用&#xff0c;允許用戶創建、組織和分享文檔資料&#xff0c;特別適合用于構建內部文檔系統、知識庫或公開的文檔站點。本文將詳細介紹如何在 Windows 系統本地部署…

VS Code編輯器

實際上&#xff0c;?Visual Studio Code&#xff08;簡稱VS Code&#xff09;?是由微軟開發的免費、開源、跨平臺的代碼編輯器&#xff0c;支持多種編程語言和框架&#xff0c;廣泛應用于現代Web和云應用開發。這也是個編輯器&#xff0c;可能是繼 GitHub 的 Atom 之后的一枝…

自動化測試篇--BUG篇

目錄 一.軟件測試的生命周期 二.bug是什么&#xff1f; 三.如何描述一個bug&#xff1f; 四.bug的級別 五.bug的生命周期 六.測試與開發產生爭執怎么辦&#xff1f;&#xff08;重要&#xff01;&#xff01;&#xff01;&#xff09; 一.軟件測試的生命周期 軟件測試人員…

Solidity智能合約基礎

基礎學習使用 remix&#xff1a;ide Remix - Ethereum IDE evm&#xff1a;ethreum virtual machine evm字節碼 強類型腳本語言 compile >evm bytescode >evm hello的樣例 聲明的關鍵字&#xff1a;contract // SPDX-License-Identifier: MIT pragma solidi…

Unity跨平臺超低延遲的RTSP/RTMP播放器技術解析與實戰應用

?? 引言&#xff1a;為什么說 Unity 中的視頻能力是“可視化神經元”&#xff1f; 隨著“可視化 實時性”成為工業數字化的關鍵支撐&#xff0c;Unity 正從傳統游戲引擎&#xff0c;演進為數字孿生系統、智能機器人中控、虛擬交互平臺、XR 可視引擎等領域的底層核心。它不再…

python學智能算法(三十三)|SVM-構建軟邊界拉格朗日方程

【1】引用 在前序學習進程中&#xff0c;我們初步了解了SVM軟邊界&#xff0c;今天就更進一步&#xff0c;嘗試構建SVM軟邊界的拉格朗日函數。 【2】基本問題 在SVM軟邊界中&#xff0c;我們已經獲得此時的最優化幾何距離的表達式&#xff1a; fmin?12∣∣w∣∣2C∑i1nξif…

【YOLOv5】

Focus模塊&#xff1a;早期再yolov5版本提出&#xff0c;后期被常規卷積替換&#xff0c;作用是圖像進入主干網絡之前&#xff0c;進行隔行隔列采樣&#xff0c;把空間維度堆疊到通道上&#xff0c;減少計算量。 SPPF:SPP的改進版本&#xff0c;把SPP的不同池化核改變為K 5 的…

Pytest項目_day05(requests加入headers)

headers 由于每個請求都需要加入一些固定的參數&#xff0c;例如&#xff1a;cookies、user-agent&#xff0c;那么將這些固定參數放入URL或params中會顯得很臃腫&#xff0c;因此一般將這些參數放在request headers中headers的反爬作用 在豆瓣網站中&#xff0c;如果我們不加入…

安全引導功能及ATF的啟動過程(四)

安全引導功能及ATF的啟動過程&#xff08;四&#xff09; ATF中bl31的啟動 在bl2中觸發安全監控模式調用后會跳轉到bl31中執行&#xff0c;bl31最主要的作用是建立EL3運行態的軟件配置&#xff0c;在該階段會完成各種類型的安全監控模式調用ID的注冊和對應的ARM核狀態的切換&am…

從手工到智能決策,ERP讓制造外貿企業告別“數據孤島“降本增效

在全球化競爭加劇的當下&#xff0c;制造型外貿企業正面臨訂單碎片化、供應鏈復雜化、合規風險上升等多重挑戰。數字化轉型已成為企業突破增長瓶頸、構建核心競爭力的必選項。然而&#xff0c;許多企業在推進過程中因選型不當陷入“系統孤島”“數據失真”“流程低效”等困境。…

DMETL簡單介紹、安裝部署和入門嘗試

一、DMETL的介紹1.1 概述我們先來簡單了解一下DMETL。DMETL是什么&#xff1f;說的簡單一點&#xff0c;DMETL一款數據處理與集成平臺&#xff1b;從功能來說&#xff0c;那DMETL就是對數據同步、數據處理以及數據交換共享提供一站式支持的平臺&#xff1b;從它的意義來說&…

NLP 人工智能 Seq2Seq、K-means應用實踐

基于Java和人工智能的Web應用 以下是基于Java和人工智能的Web應用實例,涵蓋自然語言處理、計算機視覺、數據分析等領域。這些案例結合了沈七星AI或其他開源框架(如TensorFlow、Deeplearning4j)的實現思路,供開發參考: 自然語言處理(NLP) 1. 智能客服系統 使用Java的Op…

Docker 從入門到實戰(一):全面解析容器化革命 | 2025 終極指南

2025 年,全球容器市場規模突破 200 億美元,超過 80% 的企業生產環境運行在容器之上。掌握 Docker 已成為開發、運維乃至架構師的核心競爭力。本文帶你徹底搞懂 Docker 的底層邏輯與核心價值! 一、Docker 是什么?為什么它能改變世界? 想象一下:你開發時運行完美的 Pytho…

Lazada東南亞矩陣營銷破局:指紋手機如何以“批量智控+數據中樞”重構運營生態

在Lazada以“超級APP”戰略滲透東南亞6國市場的進程中&#xff0c;商家正陷入一個結構性矛盾&#xff1a;如何用有限人力高效管理10個國家賬號&#xff0c;卻不被數據孤島拖垮營銷效率&#xff0c;更不因賬號關聯風險引發平臺封禁&#xff1f;傳統多賬號運營依賴“人手一臺設備…

操作系統: 線程(Thread)

目錄 什么是線程&#xff08;Thread&#xff09;&#xff1f; 線程與進程之間的關系 線程調度與并發執行 并發&#xff08;Concurrency&#xff09;與并行&#xff08;Parallelism&#xff09; 多線程編程的四大核心優勢&#xff08;benefits of multithreaded programmin…