#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll; typedef unsigned long long ull; //#pragma comment(linker, "/STACK:1024000000,1024000000") //#pragma comment(linker, "/STACK:36777216") //hdu 扩栈 #define mm(a) memset(a,0,sizeof(a)) #define lr rt<<1 #define rr rt<<1|1 #define sync std::ios::sync_with_stdio(false);std::cin.tie(0); #define inf 0x3f3f3f3f #define eqs 1e-8 #define lb(x) (x&(-x)) #define ch(a) (int(a-'a')+1) #define rep(i, a, b) for(int i=a;i<=b;i++) #define mkp(a, b) make_pair(a,b) #define re register #define umap(a) (a).reserve(1024);(a).max_load_factor(0.25); using namespace std; typedef pair pii; typedef pair pll; typedef pair piii; //const double pi=acos(-1); const int maxn=500005; //const ll Mod=1000000007; const ll Mod=998244353; int q[maxn]; vectorg[maxn]; int c[maxn]; int fa[maxn]; int dep[maxn]; void dfs(int u) { for(int v:g[u]) { dep[v]=dep[u]+1; dfs(v); } } bool cmp(int u,int v) { return dep[u]>dep[v]; } bool vis[maxn]; int findfa(int u,int k) { int cnt=0; while(u!=1&&cnt