【并查集】專題練習

題目列表 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

模板

836. 合并集合 - AcWing題庫

#include<bits/stdc++.h>
using ll=long long;
//#define int ll
const int N=1e5+10,mod=1e9+7;
int n,m;
int p[N],sz[N];
int find(int a)
{if(p[a]!=a) p[a]=find(p[a]);return p[a];
}
void merge(int a,int b)
{int pa=find(a),pb=find(b);if(pa!=pb){p[pa]=pb;sz[pb]+=sz[pa];}
}
void que(int a,int b){if(find(a)==find(b)) std::cout<<"Yes"<<'\n';else std::cout<<"No"<<'\n';
}
void solve()
{std::cin>>n>>m;for(int i=1;i<=n;i++){sz[i]=1;p[i]=i;}while(m--){char op;int a,b;std::cin>>op>>a>>b;if(op=='M'){merge(a,b);}else{que(a,b);}}}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
}

?837. 連通塊中點的數量 - AcWing題庫

#include<bits/stdc++.h>
const int N=1e5+10;
int p[N];
int size[N];
int find(int x)
{if(x!=p[x]){p[x]=find(p[x]);}return p[x];
}
void merge(int a,int b)
{int pa=find(a),pb=find(b);if(pa!=pb){p[pa]=pb;size[pb]+=size[pa];}
}
void query(int a,int b)
{int pa=find(a),pb=find(b);if(pa==pb){std::cout<<"Yes"<<'\n';}else std::cout<<"No"<<'\n';
}
void solve()
{int n,m;std::cin>>n>>m;for(int i=1;i<=n;i++){p[i]=i;size[i]=1;}while(m--){char op[5];std::cin>>op;int a,b;if(op[0]=='C') {std::cin>>a>>b;merge(a,b);}else if(op[1]=='1'){std::cin>>a>>b;query(a,b);}else{std::cin>>a;//詢問a中連通塊點的個數std::cout<<size[find(a)]<<'\n';}}
}
signed main()
{int t=1;//std::cin>>t;while(t--){solve();}return 0;
}

?240. 食物鏈 - AcWing題庫

普及-

(合并集合)(P2256 一中校運會之百米跑 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

判斷點是否在一個集合中。?

#include<bits/stdc++.h>using ll=long long;
using ull=unsigned long long;#define fir first
#define sec second
#define int llconst int N=2e4+10;
const int mod=1e9+7;
const double eps=1e-6;
int n,m;
int p[N],sz[N];
ll find(int a)
{if(p[a]!=a) p[a]=find(p[a]);return p[a];
}
void merge(int a,int b)
{int pa=find(a),pb=find(b);if(pa!=pb){p[pa]=pb;sz[pb]+=sz[pa];}
}
bool que(int a,int b)
{if(find(a)==find(b)) return true;else return false;
}
void solve()
{std::cin>>n>>m;std::map<std::string,int> mp;for(int i=1;i<=n;i++){std::string s;std::cin>>s;mp[s]=i;p[i]=i,sz[i]=1; }	for(int i=1;i<=m;i++){std::string a,b;std::cin>>a>>b;merge(mp[a],mp[b]);}int k;std::cin>>k;while(k--){std::string a,b;std::cin>>a>>b;if(que(mp[a],mp[b])) std::cout<<"Yes.\n";else std::cout<<"No.\n";}
}
signed main()
{std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
}

(合并集合)P8396 [CCC2022 S2] Good Groups - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

還是個模板題?

#include<bits/stdc++.h>
using ll=long long;
using ull=unsigned long long;
#define fir first
#define sec second
//#define int llconst int N=1e5+10;
const int mod=1e9+7;int n;
ll ans;
struct node{std::string s1,s2; 
}a[N];
struct nod{std::string s1,s2; 
}b[N];
std::unordered_map<std::string,std::string> p;std::string find(std::string& s)
{if(p[s]!=s) p[s]=find(p[s]);return p[s];
}
void merge(std::string& a,std::string& b)
{std::string pa=find(a),pb=find(b);if(pa!=pb){p[pa]=pb;}
}
bool que(std::string& a,std::string& b)
{if(find(a)!=find(b)) return false;else return true;
}
void solve()
{int x;//每個組3個人std::cin>>x;
//	getchar();for(int i=1;i<=x;i++){//getchar();std::cin>>a[i].s1>>a[i].s2;}int y;std::cin>>y; for(int i=1;i<=y;i++){//getchar();std::cin>>b[i].s1>>b[i].s2;}int g;std::cin>>g;for(int i=1;i<=g;i++){std::string a,b,c;//getchar();std::cin>>a>>b>>c;if(p.count(a)==0) p[a]=a;if(p.count(b)==0) p[b]=b;if(p.count(c)==0) p[c]=c;merge(a,b);merge(c,b);}ll ans=0;for(int i=1;i<=x;i++){if(!que(a[i].s1,a[i].s2)) ans++; }for(int i=1;i<=y;i++){if(que(b[i].s1,b[i].s2)) ans++; }std::cout<<ans<<'\n';
}
signed main()
{//freopen("a","w",stdout);//把結果輸出到a.in里面 std::ios::sync_with_stdio(false);std::cin.tie(0);int t=1;//std::cin>>t;while(t--){solve();}return 0;
}

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

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

相關文章

第十八講:聯合和枚舉

第十八講&#xff1a;聯合和枚舉 1.聯合體&#xff08;共用體&#xff09;1.1聯合體的聲明1.2聯合體大小的計算1.3聯合體的特點1.4聯合體的使用1.4.1聯合體的直接使用1.4.2聯合體直接使用的優化方法1.4.3聯合體成員中含有數組的使用1.4.4使用聯合體判斷當前機器是大端排序&…

K8s(Kubernetes)常用命令

大家好&#xff0c;當談及容器編排工具時&#xff0c;Kubernetes&#xff08;常簡稱為K8s&#xff09;無疑是當今最受歡迎和廣泛使用的解決方案之一。作為一個開源的容器編排平臺&#xff0c;Kubernetes 提供了豐富的功能&#xff0c;可以幫助開發人員和運維團隊管理、部署和擴…

電商分析@電商數據與運營優化

電商數據分析與運營優化是指通過對電商平臺的各種數據進行深入分析&#xff0c;以發現潛在的問題和機會&#xff0c;并采取相應的優化措施&#xff0c;提高電商運營效率和盈利能力。 首先&#xff0c;電商數據分析需要收集和整理各類數據&#xff0c;包括銷售數據、用戶數據、流…

大宋咨詢(深圳車主滿意度調查)如何開展汽車展會觀眾滿意度問卷調查

汽車展覽是由政府機構、專業協會或主流媒體等組織,在專業展館或會場中心進行的汽車產品展示展銷會或汽車行業經貿交易會、博覽會等活動。汽車展覽通過對汽車工藝的呈現與汽車產品的廣告,為消費者提供汽車制造工業與汽車產品的發展動向。同時,汽車廠商可通過汽車展覽對外宣傳產品…

實戰16:基于apriori關聯挖掘FP-growth算法挖掘關聯規則的手機銷售分析-代碼+數據

直接看視頻演示: 基于apriori關聯挖掘關聯規則的手機銷售分析與優化策略 直接看結果: 這是數據展示: 挖掘結果展示: 數據分析展示:

利用WK2168實現串口服務器

ESP32 SPI與WK2168實現串口服務器 概述系統組成代碼概述 一些老設備通過RS485采集數據,如果在一個系統中采用幾個RS485設備可能是一個不錯的選擇,但要是使用46個RS485數據采集設備為一個PLC提供外部數據,系統的性能就很難有保障了。通過一個串口服務器實現看來是一個好的選…

智慧校園有哪些特征

隨著科技的飛速進步&#xff0c;教育領域正經歷著一場深刻的變革。智慧校園&#xff0c;作為這場變革的前沿代表&#xff0c;正在逐步重塑我們的教育理念和實踐方式。它不僅僅是一個概念&#xff0c;而是一個集成了物聯網、大數據、人工智能等先進技術的綜合生態系統&#xff0…

SpringBoot源碼(自動裝配、內嵌Tomcat)

文章目錄 依賴管理pom依賴管理Web依賴自定義starter 一、WebMvcAutoConfiguration1.1 Filter1.2 Interceptor 二、源碼解析2.1 SpringApplication2.1.1 構造方法1、填充webApplicationType2、自動裝配Initializers3、自動裝配Listeners 2.1.2 run(args) 2.2 SpringApplicationR…

手寫Mitt實現事件訂閱、發布和取消訂閱

Mitt類設計 emitter屬性&#xff1a;用于存儲事件和對應的處理器 on方法&#xff1a;訂閱事件 off方法&#xff1a;取消訂閱事件 emit方法&#xff1a;觸發事件 export class Mitt<T> {private readonly emitter: Record<string, Array<(value: T[keyof T]) …

AI邊緣計算盒子在智慧交通的應用

方案背景 隨著經濟增長&#xff0c;交通出行需求大幅增長&#xff0c;但道路建設增長緩慢&#xff0c;交通供需矛盾日益顯著&#xff0c;中心城區主要道路高峰時段交通擁堵嚴重&#xff0c;道路交通擁堵逐漸常態化&#xff0c;成為制約城市可持續發展的重要因素之一。 痛點問題…

web 前端開發技術---網頁的制作

這是一個網頁代碼 上年包含了電子郵件&#xff0c;選項建 等等 分享給大家 <!-- prj_7_1.html --> <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><title>留言板設計</title><style type&…

【C++】入門(一):命名空間、缺省參數、函數重載

目錄 一、關鍵字 二、命名空間 問題引入(問題代碼)&#xff1a; 域的問題 1.::域作用限定符 的 用法&#xff1a; 2.域的分類 3.編譯器的搜索原則 命名空間的定義 命名空間的使用 舉個&#x1f330;栗子&#xff1a; 1.作用域限定符指定命名空間名稱 2. using 引入…

【數據結構與算法 | 堆篇】JAVA實現小頂堆

1. 堆的特點 堆的邏輯結構是數組&#xff0c;內存結構是完全二叉樹.完全二叉樹即只有最后一層才有葉子節點.堆又分為大頂堆與小頂堆. 大頂堆的特點是 : 父親節點比孩子節點的都要大. 小頂堆的特點與其相反.Java的優先級隊列(PriorityQueue)的底層實現即用到了小頂堆. 所以下文…

K210視覺識別模塊學習筆記3:內存卡寫入拍攝圖片_LED三色燈的操作_按鍵操作_定時器的配置使用

今日開始學習K210視覺識別模塊: LED三色燈的操作_按鍵操作_定時器的配置使用_內存卡寫入拍攝圖片 亞博智能的K210視覺識別模塊...... 本文最終目的是編寫一個按鍵拍照的例程序&#xff1a; 為以后的專用場景的模型訓練做準備&#xff0c;因為訓練自己的模型需要大量的圖片&a…

jmeter基礎入門練習題

jmeter存在A,B兩個線程組的情況下&#xff0c;默認設置下&#xff0c;運行順序是&#xff1a;A A&#xff1a;A,B同時運行 B&#xff1a;先運行A&#xff0c;在運行B C&#xff1a;先運行A&#xff0c;等待2s運行B D:先A運行完&#xff0c;等待默認設置時間后運行B 下列說法正…

編譯安裝PHP服務(LAMP3)

目錄 1.初始化設置&#xff0c;將安裝PHP所需軟件包傳到/opt目錄下 &#xff08;1&#xff09;關閉防火墻 &#xff08;2&#xff09;上傳軟件包到/opt目錄 2.安裝GD庫和GD庫關聯程序&#xff0c;用來處理和生成圖片 3.配置軟件模塊 4.編譯及安裝 5.優化把PHP 的可執行程…

nginx的安裝001

Nginx是一款高性能的HTTP和反向代理服務器&#xff0c;以及郵件代理服務器&#xff0c;由 Igor Sysoev 開發并公開發布于2004年。Nginx以其高并發處理能力、低內存消耗和穩定性著稱&#xff0c;特別適合部署在高流量的網站上。 操作系統&#xff1a; CentOS Stream 9 安裝步驟…

【算法訓練 day44 分割等和子集】

目錄 一、分割等和子集-LeetCode 416思路實現代碼1.二維dp代碼2.一維dp代碼 問題總結 一、分割等和子集-LeetCode 416 Leecode鏈接: leetcode 416 文章鏈接: 代碼隨想錄 視頻鏈接: B站 給你一個 只包含正整數 的 非空 數組 nums 。請你判斷是否可以將這個數組分割成兩個子集&…

SQL入門教程,很詳細

SQL&#xff08;Structured Query Language&#xff09;是一種用于管理關系數據庫的標準語言。它被廣泛用于存儲、操作和檢索數據。在這篇文章中&#xff0c;我們將介紹SQL的基本概念和常用命令。 首先&#xff0c;我們需要了解SQL的基本結構。SQL語句通常由以下幾個部分組成&…

頭歌數據結構與算法課程設計易-算式運算的合法性

給定一個算式運算&#xff0c;算式由運算數、、-、、/、(、)組成&#xff0c;請編寫程序判斷該算式運算是否合法。如果合法&#xff0c;計算該算式的值。 輸入描述&#xff1a; 第一行輸入一個運算表達式 輸出描述&#xff1a; 如果表達式合法則計算其值&#xff0c;結果保留兩…