uva11987 帶刪除的並查集

2022-05-31 07:36:12 字數 783 閱讀 1120

題意:初始有n個集合,分別為 1 ,2 ,3 .....n。有三種操件

1 p q 合併元素p和q的集合

2 p q 把p元素移到q集合中

3 p 輸出p元素集合的個數及全部元素的和。

題解:並查集。只是並查集中並沒有刪除的操作。所以就需要將刪除的這個點的影響降到0,也就是給刪除的點申請乙個新的id,以後都是用這個新的id來表示這個點,這樣原來的那個集合裡的點p就沒意義,自然影響就為0。

就我寫了debug那裡比較坑。。

**:

1 #include2 #include3 #include4 #include5 #include6

using

namespace

std;

78 typedef long

long

ll;9

const

int n=10*100100;10

intn,m,tot,id[n],fa[n],cnt[n];

11ll sum[n];

1213

int findfa(int

x)14

1819

intmain()

2041

if(tmp==2

) 42

53if(tmp==3)54

59//

for(int j=1;j<=n;j++)

60//

63//

printf("\n");64}

65}6667

return0;

68 }

帶權並查集 刪除 UVA11987

題意 n個數字 m個操作 1 x y 合併 x,y 2 將x元素移動到y元素所在的集合 3 輸出x集合中元素個數,和總和 思路 刪除並查集 並非把根節點或者子節點直接刪除,而是保留。之後將刪除的元素放到陣列最後進行新一輪操作。而原值所在的集合的權在刪除時進行更新就好 刪除並查集實現 既然要更新元素到...

uva11987 並查集小技巧

大意 維護一種資料結構,支援 幾乎是常數級別的 集合合併 將乙個元素轉移到另乙個集合 詢問每個集合的和與元素個數。program p11987 var n,m,i,p,q,op,top longint f,c,pos,s array 0.500002 of longint function find...

並查集入門(普通並查集 帶刪除並查集 關係並查集)

什麼是並查集?通俗易懂的並查集詳解 普通並查集 基礎並查集 例題 題解 how many tables problem description lh boy無聊的時候很喜歡數螞蟻,而且,還給每乙隻小螞蟻編號,通過他長期的觀察和記錄,發現編號為i的螞蟻會和編號為j的螞蟻在一起。現在問題來了,他現在只有...