洛谷P3366_動態(tài)樹(Link Cut Tree)
2022-07-19 13:02 作者:Clayton_Zhou | 我要投稿
https://www.luogu.com.cn/problem/P3366
給出一個無向圖,求出最小生成樹.?如果該圖連通,則輸出一個整數(shù)表示最小生成樹的各邊的長度之和。如果該圖不連通則輸出orz.
本程序的關鍵點:直接將每條邊當做點idx,那么連邊的操作就變成了
?link(x,idx);link(idx,y);
通過替換路徑上的最大邊權,最后求出?最小生成樹。
?void rotate(int x)
? ? {
? ? ? ? int y=t[x].fa;
? ? ? ? int z=t[y].fa;
? ? ? ? int k=t[y].ch[1]==x;
? ? ? ? if(!isroot(y))t[z].ch[t[z].ch[1]==y]=x;
? ? ? ? t[x].fa=z;
? ? ? ? t[y].ch[k]=t[x].ch[k^1];
? ? ? ? t[t[x].ch[k^1]].fa=y;
? ? ? ? t[x].ch[k^1]=y;
? ? ? ? t[y].fa=x;
? ? ? ? push_up(y);// 可以暫時不上傳x的兒子信息
? ? }
標簽: