#43772: dsu 解題報告


enhanwen8@gmail.com (會寫程式的羊)

學校 : 臺北市立中崙高級中學
編號 : 213606
來源 : [220.136.25.210]
最後登入時間 :
2024-10-24 21:18:23
d365. 10336 - Rank the Languages -- UVa10336 | From: [114.44.228.177] | 發表日期 : 2024-10-29 22:41

DSU(Disjoint Set Union)又稱為並查集,是一種資料結構,用於管理一些不相交集合。常見用途是在解決「動態連通性問題」,像是在圖論中檢查兩個點是否在同一連通塊中。DSU的主要操作是:

  1. 查找(Find):找出元素所在集合的代表(根節點),用於判斷兩個元素是否在同一集合中。
  2. 合併(Union):將兩個不相交的集合合併為一個集合。

DSU的核心實現技術

  • 路徑壓縮(Path Compression):在find操作中壓縮節點到根的路徑,加快之後的查找速度。
  • 按秩合併(Union by Rank):在union操作中按集合的大小(或高度)進行合併,以減少樹的高度。

這兩種技術的搭配可以使DSU的時間複雜度接近常數,為O(α(n))O(\alpha(n))O(α(n)),其中α(n)\alpha(n)α(n)是反阿克曼函數,非常小且幾乎可以視為常數。

請善用dsu AC這題吧
如果你時間真的太多的話

 
ZeroJudge Forum