板子(c++)
记录各种算法及数据结构板子
持续更新中...
算法
树链剖分
void init(long root)
{
cnt=0;
dep[root]=0;
}
void dfs1(long now)
{
size[now]=1;
son[now]=0;
for(auto i:mp[now])
if(i!=fa[now]){
fa[i]=now;
dep[i]=dep[now]+1;
dfs1(i);
size[now]+=size[i];
if(size[i]>size[son[now]])
son[now]=i;
}
}
void dfs2(long now,long t)
{
id[now]=++cnt;
top[now]=t;
if(!son[now])return;
dfs2(son[now],t);
for(auto i:mp[now])
if(i!=fa[now]&&i!=son[now])
dfs2(i,i);
}

浙公网安备 33010602011771号