```
#include<bits/stdc++.h>
#define MN 200050
#define ll long long
using namespace std;
std::set<ll>s;
std::set<ll>::iterator it;
ll n,m,cnt,head[MN],dfn[MN],dep[MN],num[MN];
ll vis[MN];
ll f[MN][21];
ll lg[MN];
ll dis[MN][18];
ll idx;
ll Ans;
struct tu
{
ll v,nxt;
ll w;
} e[MN];
void add(ll u,ll v,ll w)
{
e[++cnt].v=v;
e[cnt].nxt=head[u];
e[cnt].w=w;
head[u]=cnt;
}
void dfs(ll now,ll fa,ll dd)
{
dep[now]=dep[fa]+1;
dfn[now]=++idx;
f[now][0]=fa;
num[idx]=now;
dis[now][0]=dd;
for(ll i=1; i<=lg[dep[now]]; i++)
{
f[now][i]=f[f[now][i-1]][i-1];
dis[now][i]=dis[now][i-1]+dis[f[now][i-1]][i-1];
}
for(ll i=head[now]; i; i=e[i].nxt)
{
ll v=e[i].v;
if(v!=fa)
{
dfs(v,now,e[i].w);
}
}
}
ll getl(ll x)
{
it=s.lower_bound(x);
if(it==s.begin())it=s.end();
return *--it;
}
ll getr(ll x)
{
it=s.lower_bound(x);
if(++it==s.end())it=s.begin();
return *it;
}
ll lca(ll x,ll y)
{
if(dep[x]<dep[y])swap(x,y);
ll ans=0;
while(dep[x]!=dep[y])
{
ans+=dis[x][lg[dep[x]-dep[y]]];
x=f[x][lg[dep[x]-dep[y]]];
}
if(x==y)return ans;
for(ll k=lg[dep[x]]; k>=0; k--)
if(f[x][k]!=f[y][k])
x=f[x][k],y=f[y][k],ans+=dis[x][k]+dis[y][k];
return ans+dis[x][0]+dis[y][0];
}
int main()
{
scanf("%lld%lld",&n,&m);
lg[0]=-1;
ll sum=0;
for(ll i=1; i<=n; i++)
lg[i]=lg[i>>1]+1;
for(ll i=1; i<=n-1; i++)
{
ll x,y,z;
scanf("%lld%lld%lld",&x,&y,&z);
add(x,y,z);
add(y,x,z);
}
dfs(1,0,0);
ll x;
for(ll i=1; i<=m; i++)
{
scanf("%lld",&x);
if (!vis[x])
{
vis[x]^=1;
s.insert(dfn[x]);
sum+=lca(num[getl(dfn[x])],x)+lca(num[getr(dfn[x])],x)-lca(num[getl(dfn[x])],num[getr(dfn[x])]);
}
else
{
vis[x]^=1;
sum+=lca(num[getl(dfn[x])],x)+lca(num[getr(dfn[x])],x)-lca(num[getl(dfn[x])],num[getr(dfn[x])]);
}
printf("%lld\n",sum);
}
return 0;
}
```
端正码风QAQ
by __gcd @ 2019-06-03 21:23:57
希望更丰富的展现?使用Markdown
by MatoiRyuuko @ 2019-06-03 21:24:46
@[梁宸铭123](/space/show?uid=149192) dalao也喜欢大括号换行啊,~~我也是的呢~~
by 灵光一闪 @ 2019-06-03 21:24:48
引战警告qwq~~虽然我也是~~
by 森岛帆高 @ 2019-06-03 21:26:20
这么长的代码一般不会有人看的吧
by Koakuma @ 2019-06-03 21:28:15
@[炮姐御坂美琴](/space/show?uid=161675) QAQ
by Limit @ 2019-06-03 21:28:21
两分钟有点过分了QwQ~
by 暗ざ之殇 @ 2019-07-16 12:41:16
现在看着题就会了呢,~~而且觉得好简单~~
by 红色OI再临 @ 2019-08-19 14:28:59