其实不难..只是bug不好调QAQ
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cmath>
#define g() getchar()
#define d(x) isdigit(x)
#define pb(x) push_back(x)
#define rep(i,s,t) for(int i=(s);i<=(t);i++)
#define rep0(i,s,t) for(int i=(s);i>=(t);i--)
#define repe(i,s) for(int i=head[s];~i;i=e[i].next)
#define maxn 100010
using namespace std;
char ch;int last,n,m;
inline void F(int& x){
for(x=0,ch=g();!d(ch);ch=g());
for(;d(ch);x=x*10+ch-'0',ch=g());
}
int w[maxn],head[maxn],eid=1,tot;vector<int> hs;
struct Edge{
int to,next;
}e[maxn<<1];
inline void adde(int u,int v){
e[eid].to=v;
e[eid].next=head[u];
head[u]=eid++;
}
inline int getrank