Reachability Query

題目分析

  • 該代碼實現了一個動態集合管理系統,支持三種操作:合并集合、切換元素狀態、查詢集合中是否- 存在活躍元素。核心數據結構為并查集,結合狀態標記數組和計數器。
  • 關鍵數據結構與函數

初始化

  • fa[N]:并查集父節點數組,初始時每個元素自成一集合。
  • cnt[N]:記錄每個集合中活躍元素的數量。
  • f[N]:標記元素是否活躍(true表示活躍)。
  • 路徑壓縮:查找時直接指向根節點,優化后續查詢效率。
  • 按大小合并:將較小集合的根指向較大集合的根,并累加活躍元素計數。
  • 動態更新元素活躍狀態,并同步調整所屬集合的計數器。

操作處理流程

  • 合并集合(op=1)
  • 輸入兩個元素u和v,合并其所屬集合。
  • 切換狀態(op=2)
  • 輸入元素u,反轉其活躍狀態并更新集合計數器。
  • 查詢集合(op=3)
  • 輸入元素u,檢查其所屬集合是否存在活躍元素(cnt[find(u)] > 0)。

復雜度分析

  • 時間復雜度:單次find操作接近O(α(n))O(\alpha(n))O(α(n))(反阿克曼函數),整體操作復雜度為O(q?α(n))O(q \cdot \alpha(n))O(q?α(n))
  • 空間復雜度:O(n)O(n)O(n),用于存儲父節點、計數器和狀態數組。
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,q,fa[N],cnt[N];
bool f[N];
int find(int x)
{return (x==fa[x]?x:fa[x]=find(fa[x]));
}
void merge(int x,int y)
{x=find(x),y=find(y);if(x!=y) fa[x]=y,cnt[y]+=cnt[x];
}
void change(int x)
{int fx=find(x);if(f[x]) cnt[fx]--;else cnt[fx]++;f[x]=!f[x];
}
signed main()
{ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n>>q;for(int i=1;i<=n;i++) fa[i]=i;int op,u,v;while(q--){cin>>op;if(op==1){cin>>u>>v;merge(u,v);}else if(op==2){cin>>u;change(u);}else{cin>>u;if(cnt[find(u)]) cout<<"Yes"<<'\n';else cout<<"No"<<'\n';}}return 0;
}

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

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

相關文章

SSL移動接入方案和移動資源發布

一、SSL VPN概述SSL VPN是一種基于SSL/TLS協議的遠程安全接入技術&#xff0c;因其廣泛兼容Web瀏覽器&#xff0c;支持“無客戶端”部署&#xff0c;具備易于使用和維護的特點。它通過插件系統支持非Web類TCP/UDP應用&#xff0c;并且支持對用戶的訪問可以做出限制&#xff0c;…

C++STL---count() 統計容器中特定元素出現次數

在 C 標準庫中&#xff0c;count 是一個用于統計容器中特定元素出現次數的函數&#xff0c;定義在 <algorithm> 頭文件中。它可以快速計算某個值在容器&#xff08;如數組、vector、list 等&#xff09;中出現的次數&#xff0c;避免手動編寫循環計數的麻煩。 一、函數原…

Tesla自動駕駛域控制器(AutoPilot HW)的系統化梳理

目前網絡上對Tesla自動駕駛硬件&#xff08;AP1-AP4、HW1.0-HW4.0&#xff09;迭代的相關介紹比較混亂&#xff0c;本文這里進行系統化梳理并澄清&#xff0c;并對一些錯誤進行更正。1、AutoPilot HW迭代圖圖1 AutoPilot HWMCU迭代圖圖2 AutoPilot HW 散熱設計迭代圖&#xff0…

C 語言:第 20 天筆記:typedef(類型重命名規則、應用場景與實戰案例)

C語言&#xff1a;第20天筆記 內容提要 構造類型枚舉類型typedef綜合案例:斗地主預處理 構造類型&#xff1a;枚舉類型 使用建議 如果定義不相干的常量&#xff0c;使用宏定義&#xff08;符號常量&#xff09;&#xff1b;如果需要定義一組相關聯的常量&#xff08;如月份011、…

在 vue3 和 vue2 中,v-for 和 v-if 可以一起用嗎,區別是什么

在 Vue 2 和 Vue 3 中&#xff0c;v-for 和 v-if 可以一起使用&#xff0c;但兩者在處理順序和推薦用法上存在明顯區別&#xff0c;主要體現在優先級和最佳實踐上&#xff1a; 1. Vue 2 中的 v-for 與 v-if優先級&#xff1a;v-for 的優先級高于 v-if。 這意味著 Vue 會先循環渲…

Linux-進程相關函數

文章目錄Linux-進程相關函數父子進程關系父子進程地址空間getpid函數 獲取本進程號getppid函數 獲取當前進程的進程的父進程號getpgid函數 獲取進程組號示例fork函數 創建進程區分父子進程exit函數 進程退出wait函數 等待子進程退出waitpid函數Linux-進程相關函數 每個進程都由…

數據挖掘 6.1 其他降維方法(不是很重要)

6.1 Other dimensionality reduction methods 6.1 其他降維方法 其他降維方法前言問題答案流形3 降維大綱3.1 線性方法3.2 非線性方法3.2.1 流形學習方法&#xff08;Manifold Learning&#xff09;3.2.2 概率方法&#xff08;Probabilistic Approaches&#xff09;3.2.3 拓撲數…

Unity中的特殊文件夾

一.工程路徑獲取print(Application.dataPath);只用于游戲開發編輯器模式下&#xff0c;游戲發布后此路徑就不存在了二.Resources 資源文件夾//路徑獲取: //一般不獲取 //只能使用Resources相關API進行加載 //如果硬要獲取 可以用工程路徑拼接print(Application.dataPath "…

Seaborn數據可視化實戰:Seaborn高級使用與性能優化教程

Seaborn最佳實踐與技巧 學習目標 本課程將深入探討Seaborn庫的高級使用技巧&#xff0c;包括性能優化、常見問題解決方法等&#xff0c;旨在幫助學員掌握如何高效地使用Seaborn進行數據可視化&#xff0c;提升圖表的美觀度和信息傳達效率。 相關知識點 Seaborn最佳實踐與技巧 學…

分布式系統與單機系統的優劣勢對比

近期有遇到一個本地部署的需求&#xff0c;他們希望用主備方案&#xff0c;這就涉及到了備用系統怎么收費的問題。我們是單機系統&#xff0c;其他友商是分布式系統&#xff0c;那20坐席的手撥需求到底是選單機系統好&#xff0c;還是選分布式系統好呢&#xff1f;了解了兩者的…

深度學習:從手寫數字識別案例認識pytorch框架

目錄 一、PyTorch 核心優勢與框架定位 二、實戰基礎&#xff1a;核心庫與數據準備 1. 關鍵庫導入與功能說明 2. MNIST 數據集加載與可視化 &#xff08;1&#xff09;數據集下載與封裝 &#xff08;2&#xff09;數據集可視化&#xff08;可選&#xff09; 3. DataLoade…

二分|組合|旋轉數組

lc1976dijk min_pathpq. min_wlcr187同lc1823.約瑟夫環class Solution { public:int iceBreakingGame(int num, int target) {int x0;for(int i2;i<num;i){x(xtarget)%i;} return x;} };lc2972計算數組中可移除的子數組數量先找最長遞增前綴&#xff0c;再結合遞增后綴…

【C語言16天強化訓練】從基礎入門到進階:Day 10

&#x1f525;個人主頁&#xff1a;艾莉絲努力練劍 ?專欄傳送門&#xff1a;《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題、洛谷刷題、C/C基礎知識知識強化補充、C/C干貨分享&學習過程記錄 &#x1f349;學習方向&#xff1a;C/C方向學習者…

云計算與云原生技術探索

&#x1f31f; Hello&#xff0c;我是蔣星熠Jaxonic&#xff01; &#x1f308; 在浩瀚無垠的技術宇宙中&#xff0c;我是一名執著的星際旅人&#xff0c;用代碼繪制探索的軌跡。 &#x1f680; 每一個算法都是我點燃的推進器&#xff0c;每一行代碼都是我航行的星圖。 &#x…

STM32之ADC詳解

一、ADC概述 ADC&#xff08;模擬量轉數字量轉換器&#xff09;&#xff0c;在 STM32 開發中&#xff0c;利用 ADC 端口的電壓數據&#xff0c;轉換為對應的具體數字量數據內容。可通過 ADC 方式獲取常用數據內容有&#xff1a; 光敏電阻、電池電量、油箱油量 ADC 轉換…

深入理解計算機網絡:從基礎到應用的全面解析

標題&#xff1a;深入理解計算機網絡&#xff1a;從基礎到應用的全面解析 引言 計算機網絡已經滲透到我們生活的方方面面。從家庭Wi-Fi到全球互聯網&#xff0c;我們每天都在通過各種設備進行數據交換。本文將帶領你走進計算機網絡的世界&#xff0c;深入探討網絡的基礎知識、常…

以結構/序列/功能之間的關系重新定義蛋白質語言模型的分類:李明辰博士詳解蛋白質語言模型

上海交通大學第三屆「AI for Bioengineering 暑期學校」于 2025 年 8 月 8—10 日正式開啟。本次暑期學校匯聚了自全球 70 余所高校、 10 余所科研機構及 10 余家行業領軍企業的 200 余位青年才俊、科研學者和產業代表&#xff0c;共同聚焦于人工智能&#xff08;AI&#xff09…

【大語言模型 15】因果掩碼與注意力掩碼實現:深度學習中的信息流控制藝術

【大語言模型 15】因果掩碼與注意力掩碼實現&#xff1a;深度學習中的信息流控制藝術 關鍵詞&#xff1a;因果掩碼、注意力掩碼、下三角掩碼、Padding掩碼、序列建模、GPT解碼器、BERT編碼器、批量處理優化、自回歸語言模型、信息流控制 摘要&#xff1a;在Transformer架構中&a…

大型電動化工程機械設備智能施工試驗場的網絡設計方案

隨著工程機械設備逐步邁向智能化、電動化和無人化&#xff0c;傳統施工試驗場已經難以滿足現代化施工設備的研發、測試和驗證需求。為了適應這一趨勢&#xff0c;建設一個基于高性能網絡架構的大型智能施工試驗場成為關鍵。本文將從網絡架構、設備選型和功能實現等方面&#xf…

SPMI總線協議(一)

1、簡單說明 系統電源管理接口( System Power Management Interface簡稱SPMI)是一種雙線串行接口,用于連接片上系統(SoC)處理器系統的集成電源控制器(PC)與一個或多個電源管理集成電路(PMIC)電壓調節系統。SPMI 使系統能夠使用單個 SPMI 總線動態調整 SoC 內部電壓域的…