模板 樹鏈剖分BFS版本

2021-09-07 02:49:27 字數 756 閱讀 3730

//

點和線段樹都從1開始

//邊使用vector

vectorg[maxn];

int dfs_clock,que[maxn*2

],num[maxn],iii[maxn],b[maxn],a[maxn],top[maxn],deep[maxn],fa[maxn],idx[maxn];

//採用靜態鍊錶

//a[i] 是初始時樹上每個點的權值

//b[i] 是經過bfs後每個點的權值

//idx[i] 是每個點在全域性線段樹中的下標

void

build_list()

}memset(num,

0, sizeof

num);

for(int i = n-1; i >= 0; i--)

for(int i = 1; i <= n; i++)

top[

1] = 1

;

for(int i = 1; i < n; i++)

memset(iii,

0, sizeof

iii);

ft = 0

; dfs_clock = 0

; que[++ft] = 1

; idx[

1] = ++dfs_clock;

b[1] = a[1

];

while

(ft)

}}

樹鏈剖分 模板

class match node a n struct no no aa n 4 void init void addpage int x,int y void dfs int s,int faa,int h 根節點,父節點和深度的 if max 0 son s sign void dfs2 int...

模板 樹鏈剖分

define maxn 50010 define l u u 1 define r u u 1 1 寫在類裡面爆棧 int n,m,q int tim 時間戳 int num maxn 樹上每個節點的初始值 int siz maxn siz u 表示以u為根的子樹的節點數 int top maxn ...

樹鏈剖分模板

點權模板 1 m a b c將節點a到節點b路徑上所有點都染成顏色c 2 q a b詢問節點a到節點b路徑上的顏色段數量 連續相同顏色被認為是同一段 如 112221 由3段組成 11 222 和 1 const int n 100100 struct edge g n 2 int cnt,head...