重点在于实现。
#3163. 「CEOI2019」动态直径
#include<bits/stdc++.h>
#define maxn 200005
#define pii pair<int,int>
#define mp make_pair
#define lc u<<1
#define rc u<<1|1
#define LL long long
using namespace std;
char cb[1<<15],*cs=cb,*ct=cb;
#define getc() (cs==ct&&(ct=(cs=cb)+fread(cb,1,1<<15,stdin),cs==ct)?0:*cs++)
template<class T>void read(T &res){
char ch;
for(;!isdigit(ch=getc()););
for(res=ch-'0';isdigit(ch=getc());res=res*10+ch-'0');
}
int n,q;
LL cst[maxn],W,wi[maxn],dep[maxn];
int info[maxn],Prev[maxn],to[maxn],son[maxn],cnt_e=1;
void Node(int u,int v,LL w){
Prev[++cnt_e]=info[u],info[u]=cnt_e,to[cnt_e]