Pro
Sol
很裸的一道树上差分,不过和往常还不太一样。
根据题目中给出的ai来差分,最后肯定有点被多加了值,所以最后再跑一边去掉就好。
然而…… 我lca的模板打错了……
Code
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
const long long L = 300005;
struct Node {
long long to , next;
};
Node e[2*L];
long long n , q[L] , tot , head[L] , vis[L] , deep[L] , fa[L][35] , num[L];
void add(long long x , long long y) {
tot++;
e[tot].next = head[x];
e[tot].to = y;
head[x] = tot;
}
void dfs(long long u) {
vis[u] = 1;
for(int i=head[u]; i; i=e[i].next) {
long long v = e[i].to;
if(vis[v])
continue;
deep[v] = deep[u] + 1;
fa[v][0] = u;
dfs(v);
}
}
long long lca(long long x , long long y) {
if(deep[x]<