傳送門
up[i] 表示乙個木塊上面有多少個
all[i] 表示整個連通塊內有多少個
那麼 乙個木塊下面的木塊個數為 all[root[i]] - up[i] - 1
注意:up[i] 可以在 find 函式中維護,而 all[i] 不好維護,那麼我們只需要祖先節點的 all[i] 表示整個連通塊內木塊的數目即可
合併時也注意維護
——**
1 #include 2 #include 3view code#define n 100000145
intn;
6int
f[n], up[n], all[n];
78 inline int
read()916
17 inline int find(int
x)18
25return
f[x];26}
2728
intmain()
2947
else
4853}54
return0;
55 }
疊積木(加權並查集)
題目描述 約翰和貝西在疊積木。共有30000塊積木,編號為1到30000。一開始,這些積木放在地上,自然地分成n堆。貝西接受約翰的指示,把一些積木疊在另一些積木的上面。一旦兩塊積木相疊,彼此就再也不會分開了,所以最後疊在一起的積木會越來越高。約翰讓貝西依次執行p條操作,操作分為兩種 第一種是移動操作...
題解 P2342 疊積木
約翰和貝西在疊積木。共有30000塊積木,編號為1到30000。一開始,這些積木放在地上,自然地分成n堆。貝西接受約翰的指示,把一些積木疊在另一些積木的上面。一旦兩塊積木相疊,彼此就再也不會分開了,所以最後疊在一起的積木會越來越高。約翰讓貝西依次執行p條操作,操作分為兩種 請編寫乙個程式,幫助貝西回...
疊箱子 並查集
題目 話說上次偉神和肖神去買東西,由於偉神身材瘦削,體力不支所以沒能把肖神想要的東西都揹回來,最後還是在基地同學的幫助下,才勉強揹回了價值最大的物品。對於這個事情,肖神非常不滿,於是,肖神為偉神制定了一套鍛鍊身體的方案。肖神從網上網購了 n 個石塊 1 n 30000 這些石塊的編號從1到n不等。肖...