SDOI2008 洞穴勘測

2022-03-03 17:27:31 字數 999 閱讀 8846

lct維護連通性型別的題目,主要是要搞清楚findroot函式的作用——判斷根是否相同,和並查集裡面的find()函式有異曲同工之妙,如果根相同可以認為兩個點具有連通性。

先access打通一道到x的實邊,現在x是深度最大的節點。然後再splay x到根節點,因為它深度最大,這個時候它只有左子樹。所以找它的原樹的根就去左節點找好啦qwq。(原樹節點是中序遍歷深度最小的嘛)

哦 對了,因為找根的時候有可能標記沒有完全釋放掉。。。最好還是push_down一下吧。。。原先沒有注意到,看了flash_hu dalao的部落格才注意到。。。qwqwq

**如下:

#include#include#include#include#define maxn 100010

#define mod 51061

using namespace std;

int n,m,tot;

int s[maxn];

struct nodet[maxn];

inline void push_up(int x)

inline bool isroot(int x)

inline void rotate(int x)

inline void push_down(int x)

}inline void splay(int x)

}inline void access(int x)

inline void makeroot(int x)

inline void split(int x,int y)

inline void cut(int x,int y)

inline void link(int x,int y)

inline int findroot(int x)

int main()

else if(cur[0]=='d') cut(u,v);

else link(u,v);

}return 0;

}

SDOI2008 洞穴勘測

輝輝熱衷於洞穴勘測 某天,他按照地圖來到了一片被標記為jszx的洞穴群地區 經過初步勘測,輝輝發現這片區域由n個洞穴 分別編號為1到n 以及若干通道組成 並且每條通道連線了恰好兩個洞穴。假如兩個洞穴可以通過一條或者多條通道按一定順序連線起來 那麼這兩個洞穴就是連通的,按順序連線在一起的這些通道則被稱...

SDOI2008 洞穴勘測 LCT

題目描述 輝輝熱衷於洞穴勘測。某天,他按照地圖來到了一片被標記為jszx的洞穴群地區。經過初步勘測,輝輝發現這片區域由n個洞穴 分別編號為1到n 以及若干通道組成,並且每條通道連線了恰好兩個洞穴。假如兩個洞穴可以通過一條或者多條通道按一定順序連線起來,那麼這兩個洞穴就是連通的,按順序連線在一起的這些...

SDOI2008 洞穴勘測 LCT模板

bzoj 2049 傳送門 洛谷p2147 傳送門 這個大佬的lct詳解超級棒的!link cut tree的基本思路是用splay的森林維護一條條樹鏈。splay的森林,顧名思義,就是若干splay組成的東西。每個splay都有乙個根節點,所以lct裡的splay不能記錄根節點,因為根節點有好多。...