传送门
【题目分析】
不同于上一个换根的题,这道题求的是子树最小值。
所以我想了很久。。。。。。还想着将子树全部改为INF再一个一个更新回去。。。。
我好菜啊qwq
其实就只用在1~dfn[las]-1和dfn[las]+siz[las]~n之间取最小值就行了嘛。。。。
qwq
【代码~】
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
const int MAXM=2e5+10;
const int INF=0x3f3f3f3f;
int n,q,cnt;
int rt=1;
int a[MAXN];
int head[MAXN],depth[MAXN],siz[MAXN],fa[MAXN],son[MAXN],top[MAXN];
int nxt[MAXM],to[MAXM];
int dfn[MAXN],ys[MAXN],tot;
struct Tree{
int l,r;
int minn;
}tr[MAXN<<2];
int Read(){
int i=0,f=1;
char c;
for(c=getchar();(c>'9'||c<'0')&&c!='-';c=getchar())