#pragma comment(linker,"/STACK:102400000,102400000") #include #include #include #include #include #include #define ll int using namespace std; const int maxn = 100000+10; int t,n,m; vector g[maxn]; int fa[maxn][25],deep[maxn]; int cnt,l[maxn],r[maxn]; vector lis[maxn]; void dfs(int u,int f,int d){ l[u]=++cnt,deep[u]=d,fa[u][0]=f; for(int i=0;i=0;j--) if (fa[x][j] != fa[y][j]) x = fa[x][j], y = fa[y][j]; return fa[x][0]; } int st[maxn],en[maxn],quan[maxn]; int dp[maxn],sum[maxn],sd[maxn<<1],ss[maxn<<1]; int lowbit(int x) { return x&(-x); } void Add(int id,int x,int c[]) { for(int i=id;i<=2*n;i+=lowbit(i)) c[i]+=x; } int Sum(int id,int c[]) { int tmp=0; for(int i=id;i>0;i-=lowbit(i)) tmp+=c[i]; return tmp; } void dfs2(int u,int f){ for(int i=0;i