LCT 洞穴勘測

2021-08-02 20:15:20 字數 1161 閱讀 9404

codevs洞穴勘測原題戳這裡

題目大意:

建路 connect u v

毀路 destroy u v

查詢路是否聯通 query u v

用到的幾個基本操作,link,cut,access,reverse,find

/*本題中所用到的ch和fa,為splay樹上的,與原樹沒有關係*/

/*博主個人愛好結構體,不適者可自動yy成陣列*/

#include

#include

#include

#include

using

namespace

std;

inline

int read()

while(ch>='0'&&ch<='9')

return x*f;

}int n,m;

int st[10050];

struct lctt[10050];

int isroot(int x)

void pushdown(int k)

}void rotate(int x)

t[x].fa=z;

t[y].fa=x;

t[t[x].ch[r]].fa=y;

t[y].ch[l]=t[x].ch[r];

t[x].ch[r]=y;

}//一些被注釋掉的部分為正常的splay,博主手殘試了下,不適用於本題,會全t

//bool son(int x)

////

//void point(int x,int fa,bool z)

////

//void rotate(int x)

//void splay(int x)

for(int i=top;i;i--)pushdown(st[i]);

while(!isroot(x))

rotate(x);

}}void access(int x)

}void rever(int x)

void link(int x,int y)

void cut(int x,int y)

int find(int x)

int main()

}return

0;}

SDOI2008 洞穴勘測 LCT

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

BZOJ2049 洞穴勘測(LCT)

太長也懶得複製了 題目大意就是 給你n個點,這n個點一開始沒有路徑相連,然後給出m個操作,包含三個操作 1.query x,y 詢問x,y之間是否連通。2.connect x,y 在x,y之間連一條邊。3.destroy x,y 將x,y之間的邊刪除。最後對於每個query,如果連通就輸出 yes ...

SDOI2008 洞穴勘測 LCT模板

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