- 14
- 0
- 约3.05万字
- 约 24页
- 2016-11-29 发布于重庆
- 举报
树链剖分模板
SPOJ 375给一颗树,每条边有一个权值。有两种操作:1、修改某条边的值;2、询问a、b两点路径上边权的最大值。Input:131 2 12 3 2QUERY 1 2CHANGE 1 3QUERY 1 2DONEOutput:13//树链剖分、边权#include cstdio#include cstring#include vector#include algorithmusing namespace std;#define Del(a,b) memset(a,b,sizeof(a))const int N = 10005;int dep[N],siz[N],fa[N],id[N],son[N],val[N],top[N]; //top 最近的重链父节点int num;vectorint v[N];struct tree{ int x,y,val; void read(){ scanf(%d%d%d,x,y,val); }};tree e[N];void dfs1(int u, int f, int d) { dep[u] = d; siz[u] = 1; son[u] = 0; fa[u] = f; for (int i = 0; i v[u].size(); i++) { int ff = v[u][i]; if (ff == f) continue; dfs1(ff,
原创力文档

文档评论(0)