我猜会有智障说直接链剖+线段树…(希望没有) From RYC's 课件


然鹅我并不反对树剖。。。我是智障。。。QAQ

好吧还是树上差分:设 a[i]=u.a[i+1]=v

++w[u],++w[v],--w[lca(u,v)],--w[fa of lca(u,v)] 最后dfs一边统计答案

#pragma GCC optimize (2)
#include<cstdio>
#include<iostream>
#define R register int
const int M=;
using namespace std;
inline int g() {
R ret=; register char ch; while(!isdigit(ch=getchar()));
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret;
}
int n,cnt;
int vr[M<<],nxt[M<<],fir[M],a[M],d[M],f[M][],w[M],ans[M];
inline void add(int u,int v) {vr[++cnt]=v,nxt[cnt]=fir[u],fir[u]=cnt;}
void dfs(int u) {
for(R i=fir[u];i;i=nxt[i]) { R v=vr[i];
if(d[v]) continue; d[v]=d[u]+; R p=u; f[v][]=u;
for(R j=;f[p][j];++j) f[v][j+]=f[p][j],p=f[p][j];
dfs(v);
}
}
inline void lca(int u,int v) {
if(d[u]<d[v]) swap(u,v); R uu=u,vv=v;
for(R j=;j>=;--j) if(d[f[u][j]]>=d[v]) u=f[u][j];
if(u==v) {--w[u],--w[f[u][]],++w[uu],++w[vv]; return ;}
for(R j=;j>=;--j) if(f[u][j]!=f[v][j]) u=f[u][j],v=f[v][j];
u=f[u][]; ++w[uu],++w[vv],--w[u],--w[f[u][]]; return ;
}
void dfs2(int u) {
for(R i=fir[u];i;i=nxt[i]) { R v=vr[i];
if(v==f[u][]) continue; dfs2(v);
w[u]+=w[v];
}
}
signed main() {
n=g(); for(R i=;i<=n;++i) a[i]=g();
for(R i=,u,v;i<n;++i) u=g(),v=g(),add(u,v),add(v,u);
d[]=; dfs(); for(R i=;i<n;++i) lca(a[i],a[i+]); dfs2();
for(R i=;i<=n;++i) printf("%d\n",(i==a[]?w[i]:w[i]-));
}

2019.04.22

最新文章

  1. strstr 函数的实现
  2. MySql基础整理
  3. Ajax的使用
  4. express-4 质量保证(1)
  5. iOS math.h数学函数
  6. UIView的frame和bounds的含义
  7. 【BZOJ】【1026】【SCOI2009】Windy数
  8. Maven 修改本地存储库位置--转
  9. HDU 3584 Cube
  10. Spring——Web应用中的IoC容器创建(WebApplicationContext根应用上下文的创建过程)
  11. superset在 centos 7安装运行
  12. ubuntu安装spyder和jupyter notebook
  13. 【杂谈】Starter Template
  14. javascript闭包的使用--按钮切换
  15. php中对Mysql数据库的访问操作
  16. 编译Linux内核(Mac OS平台)
  17. what is a resolver
  18. codeforces-1080C
  19. LVS基本原理
  20. 将你的wordpress博客添加到百度个性首页

热门文章

  1. js在浏览器下的区别小结(部分)
  2. Ubuntu安装Chrome及hosts修改
  3. AndroidImageSlider(图片轮播控件)
  4. 奇葩问题 eclipse下 maven项目 java Resource报个小红叉,然而里面却没有小红叉
  5. webfrom 做项目的注意事项
  6. c语言实战: 计算时间差
  7. R: 自定义函数
  8. 51NOD 1616 最小集合
  9. ZROI2018提高day2t1
  10. pch文件的创建与配置