树链剖分
来源:互联网 发布:清远数据库工程师招聘 编辑:程序博客网 时间:2024/06/05 18:21
void dfs1(int u,int fa,int depth){ dep[u]=depth; f[u]=fa;sz[u]=1;son[u]=-1; for(int i=first[u];i!=-1;i=edge[i].next) { int v=edge[i].e; if(v==fa) continue; dfs1(v,u,depth+1); up[v]=edge[i].w; sz[u]+=sz[v]; if(son[u]==-1||sz[son[u]]<sz[v]) son[u]=v; }}void dfs2(int u,int tp){ top[u]=tp; id[u]=++mark; p[mark]=u; if(son[u]==-1) return; dfs2(son[u],tp); for(int i=first[u];i!=-1;i=edge[i].next) { int v=edge[i].e; if(v==f[u]||v=son[u]) continue; dfs2(v,v); }}void change(int u,int v,int w){ int tu=top[u]; int tv=top[v]; while(tu!=tv) { if(dep[tu]<dep[tv]) { swap(tu,tv); swap(u,v); } update(id[tu],id[u],1,n,1,w); u=f[tu]; tu=top[u]; } if(u==v) return;//根据是边权还是点权修改 if(dep[u]<dep[v]) swap(u,v); update(id[son[v]],id[u],1,n,1,w);}
阅读全文
0 0
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- 树链剖分
- MongoDB的使用方法
- 一段js实现复制文本内容到剪切板
- 洛谷[1471] 方差
- 判断一个对象是否为空
- Java面向对象知识
- 树链剖分
- 豆浆油条
- gdb的几个基本命令
- get,post,jsonp数据交互—百度下拉列表
- Oozie和Azkaban的技术选型和对比
- AttributeError: 'list' object has no attribute 'write_pdf'
- TabLayout基本使用
- ionic问题累计
- app开发中的异步处理(一)