#include #include #include #include #include #include using namespace std; typedef long long ll; typedef long double ld; typedef pair pr; const double pi=acos(-1); #define rep(i,a,n) for(int i=a;i<=n;i++) #define per(i,n,a) for(int i=n;i>=a;i--) #define Rep(i,u) for(int i=head[u];i;i=Next[i]) #define clr(a) memset(a,0,sizeof a) #define pb push_back #define mp make_pair #define fi first #define sc second ld eps=1e-9; ll pp=1000000007; ll mo(ll a,ll pp){if(a>=0 && a>=1,a=mo(a*a,pp))if(b&1)ans=mo(ans*a,pp);return ans;} ll read(){ ll ans=0; char last=' ',ch=getchar(); while(ch<'0' || ch>'9')last=ch,ch=getchar(); while(ch>='0' && ch<='9')ans=ans*10+ch-'0',ch=getchar(); if(last=='-')ans=-ans; return ans; } //head #define N 3100 int fa[N],lab[N],low[N],vis[N],tim,head[N],v[N*N],Next[N*N],num=1,ans,m=0,q[N*N*2]; bool p[N*N*2]; void add(int x, int y){ v[++num]=y;Next[num]=head[x];head[x]=num;p[num]=0; // printf("%d %d\n",x,y); } struct node{ int x,y,z; }a[N*N]; bool cmp(node a,node b){ return a.zlab[u])++ans; low[u]=min(low[u],low[v[i]]); } else low[u]=min(low[u],lab[v[i]]); } //cout<<"out "<