jzoj3717
#include<bits/stdc++.h>
using namespace std;
extern int main2(void) __asm__ ("main2");
typedef long long ll;
ll f[500010][21],dep[500010],n,m,a[400010];
ll ans=0,ec,v[1000010],nxt[1000010],h[500010],vis[500010],p[500010];
void add(ll x,ll y){v[++ec]=y;nxt[ec]=h[x];h[x]=ec;}
void dfs(ll x,ll g){
for(ll i=1;i<=20;i++)
f[x][i]=f[f[x][i-1]][i-1];
for(ll i=h[x];i;i=nxt[i])
if(v[i]!=g){
dep[v[i]]=dep[x]+1;
p[v[i]]=x;
f[v[i]][0]=x;
dfs(v[i],x);
}
}
ll lca(ll x,ll y){
if(dep[x]<dep[y])swap(x,y);
for(int i=20;i>=0;i--)
if(dep[f[x][i]]>=dep[y])
x=f[x][i];
if(x==y)return x;
for(int i=20;i>=0;i--)
if(f[x][i]!=f[y][i])
x=f[x][i],y=f[y][i];
return f[x][0];
}
ll find(ll x){return p[x]==x?x:p[x]=find(p[x]);}
void jump(ll x,ll y){
if(dep[x]<dep[y])return;
p[x]=f[x][0];
vis[x]=1;
jump(find(x),y);
}
int main2(){
freopen("train.in","r",stdin);
freopen("train.out","w",stdout);
ll las;
scanf("%lld%lld%lld",&n,&m,&las);
for(ll i=1;i<n;i++){
ll x,y;
scanf("%lld%lld",&x,&y);
add(x,y);add(y,x);
}
dep[1]=1;
dfs(1,0);
for(ll i=1;i<=m;i++)scanf("%lld",&a[i]),p[a[i]]=a[i];
for(ll i=1;i<=m;i++){
if(vis[a[i]])continue;
ll lc=lca(las,a[i]);
ans+=dep[las]+dep[a[i]]-2*dep[lc];
jump(las,lc);
jump(a[i],lc);
las=a[i];
}
printf("%lld\n",ans);exit(0);
}
int main(){
int size=32<<20; char *p=(char*)malloc(size)+size;
__asm__ __volatile__("movq %0, %%rsp\n" "pushq $exit\n" "jmp main2\n" :: "r"(p));
}
占坑
jzoj3717的更多相关文章
- NOIP前的刷题记录
因为这几天要加油,懒得每篇都来写题解了,就这里记录一下加上一句话题解好了 P4071 [SDOI2016]排列计数 组合数+错排 loj 6217 扑克牌 暴力背包 P2511 [HAOI2008 ...
随机推荐
- avalon新一代UI库发布
任何前端框架,尤其是国内的,想推广开,必须有一个UI库,光是一个核心库当光头司令是不行的.此外还有一个小圈子,供大家遇到问题时可以发问,一起完善.自从avalon嫁入"去哪儿网"后 ...
- GBDT,Adaboosting概念区分 GBDT与xgboost区别
http://blog.csdn.net/w28971023/article/details/8240756 ============================================= ...
- python 画直方图
import numpy as npimport matplotlib.pyplot as plt def sample_data(size,length=100): data=[] for i in ...
- shell脚本学习指南-学习(1)
1.先看下面这个命令: $who | wc -l 计算当前登陆的用户个数: $who 当前登陆的有哪些用户: pipeling( | )可以在两个程序之间建立管道,左侧的结果成为右侧的 ...
- 31. Next Permutation (Array; Math)
Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...
- IoC和DI的区别
------------------siwuxie095 IoC 和 DI 的区别 1.区别 (1)Io ...
- 操作ini配置文件设计一个最基本的可视化数据库系统
对于很多小项目来说,不需要搭建专门的数据库系统(例如用SQLite搭建本地数据库),这时可以用ini配置文件实现一个最基本的数据库,实现数据库最基本的增删改查功能. ini配置文件的用法参考我以前写的 ...
- Luogu 4433 [COCI2009-2010#1] ALADIN
LOJ 2958 线段树 + 类欧 主要矛盾就是$\sum\limits_{i = l}^{r}Ai \mod B$怎么做. 拆成前缀和相减的形式,有 $$\sum_{i = 0}^{r}(Ai \m ...
- Luogu 4512 【模板】多项式除法
高级操作,感觉非常神仙. 题目中的字母太难懂了,重新定义一下. $$A(x) = B(x) * C(x) + D(x)$$ 其中,$A(x)$的次数是$n$,$B(x)$的次数是$m$,$A, B$都 ...
- MySQL redo log及recover过程浅析
写在前面:作者水平有限,欢迎不吝赐教,一切以最新源码为准. InnoDB redo log 首先介绍下Innodb redo log是什么,为什么需要记录redo log,以及redo log的作用都 ...