#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
#pragma comment(linker,"/STACK:102400000,102400000")
const int maxn = 111111;
long long ADD1[maxn],ADD2[maxn];
int side,node,wei[maxn],link[maxn],lnode[maxn];
//先转化为有根树
int fa[maxn]; //每个结点的父节点
int w[maxn]; //每个结点的与其父节点的连边在线段树中的位置
int top[maxn]; //每条重链中其首节点;
int dep[maxn]; //每个节点的深度;
int......
阅读全文