倍增:
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
#define pb push_back
vector <int > mp[100010];
int dep[100100],fa[100010][18];
int n,m;
ll val[100100];
void dfs(int x,int f){
dep[x]=dep[f]+1;
val[x]+=val[f];
fa[x][0]=f;
for (int i=1;i<=17;i++){
fa[x][i]=fa[fa[x][i-1]][i-1];
}
for (int i:mp[x]){
if (f!=i){
dfs(i,x);
}
}
}
int lca(int x,int y){
if (dep[x]<dep[y]) swap(x,y);
for (int i=17;i>=0;i--){
if (dep[fa[x][i]]>&#