洛谷 P2147 LCT維護連通性 水題

2021-08-25 05:19:26 字數 844 閱讀 1970

傳送門

題意: 就是不斷的加邊和刪邊, 然後會詢問兩點是否聯通

思路: 這就是模板題啊, 注意的點是判斷聯通性時要通過找兩個點的root是否相等, 我之前寫的找乙個點的root是否等於另乙個點, 可是另乙個點不一定時根呀…. 所以是錯的…

ac code

const

int maxn = 1e4 + 5;

int a[maxn];

struct node

}t[maxn];

bool nroot(int x)

void pushup(int x)

void pushdown(int x)

}void rot(int x)

int stk[maxn], top;

void splay(int x)

while(top) pushdown(stk[top--]);

for(int fa ; nroot(x) ; rot(x))

pushup(x);

}int access(int x)

return i;

}int lca(int x, int y)

void makeroot(int x)

int findroot(int x)

void split(int x, int y)

void link(int x, int y)

void cut(int x, int y)

}int query(int x, int y)

void solve()

while(q--)

}}

洛谷P3690 LCT模板

題目 自己竟然從沒有鑽研過lct上的連通性問題!於是被最後乙個點卡了,似乎因為 find 函式只能找出連通性而不能判斷有沒有直接相連的邊 所以還是直接在 cut 函式裡判斷一下好了。注 第9個點時t時不t的,不想去管它了。如下 include include include using namesp...

洛谷 P2147 SDOI2008 洞穴勘測

p2147 sdoi2008 洞穴勘測 思路 按時間分治,然後每條邊有乙個存活時間段,按存活時間段將邊加入劃分樹,然後在劃分樹上分治,用可撤銷並查集維護連通性。pragma gcc optimize 2 pragma gcc optimize 3 pragma gcc optimize 4 incl...

洛谷P2147 SDOI2008 洞穴勘測

題目大意 有 n 個洞穴,m 條指令,指令有三種 connect u v 在 u,v 之間連一條邊 destroy u v 切斷 u,v 之間的邊 query u v 詢問 u,v 是否連通 資料保證合法 題解 lct 潘佳奇的板子 卡點 無 潘佳奇的板子 c code include includ...