Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
35082 LYLAKIOIAKIOI 【S】T4 C++ 运行出错 0 3 MS 7300 KB 3162 2024-11-26 16:18:58

Tests(0/25):


#include<bits/stdc++.h> using namespace std; #define pii pair<int,int> #define fi first #define se second #define mk make_pair const int N=3e5+10,inf=1e9+10; vector<int> E[N]; int f[N],g[N],h[N]; int fa[N][22],siz[N],hi[N],dep[N],hs[N],dfn[N],rk[N],top[N]; int idx[N]; int n,s,a,b; void dfs1(int u,int pr){ dep[u]=dep[pr]+1; fa[u][0]=pr;for(int i=1;i<=19;i++) fa[u][i]=fa[fa[u][i-1]][i-1]; pii hs0=mk(0,0); for(auto v:E[u]){ if(v==pr) continue; dfs1(v,u); hi[u]=max(hi[u],hi[v]); siz[u]+=siz[v]; hs0=max(hs0,mk(siz[v],v)); }hs[u]=hs0.se; hi[u]++;siz[u]++; }int dc=0; void dfs2(int u,int pr,int tp){ dfn[u]=++dc;rk[dc]=u;top[u]=tp; for(auto v:E[u]){ if(v==hs[u]) dfs2(v,u,tp); }for(auto v:E[u]){ if(v==pr) continue; if(v!=hs[u]) dfs2(v,u,v); } } #define ls p*2 #define rs p*2+1 #define mid (l+r)/2 struct sgt1{ int T[N<<2],tg[N<<2]; void pu(int p){ T[p]=min(T[ls],T[rs]); }void pd(int p){ T[ls]=min(tg[p],T[ls]); T[rs]=min(tg[p],T[rs]); tg[ls]=min(tg[p],tg[ls]); tg[rs]=min(tg[p],tg[rs]); tg[p]=inf; }void bd(int p,int l,int r){ tg[p]=inf;T[p]=inf; bd(ls,l,mid);bd(rs,mid+1,r); }void upd(int p,int l,int r,int pl,int pr,int v){ if(pl<=l&&r<=pr){ T[p]=min(T[p],v);tg[p]=min(tg[p],v);return ; }pd(p); if(pl<=mid) upd(ls,l,mid,pl,pr,v); if(pr>mid) upd(rs,mid+1,r,pl,pr,v);pu(p); }int qry(int p,int l,int r,int pl,int pr){ if(pl<=l&&r<=pr) return T[p]; int res=inf;pd(p); if(pl<=mid) res=min(res,qry(ls,l,mid,pl,pr)); if(pr>mid) res=min(res,qry(rs,mid+1,r,pl,pr));return res; } }sgth,sgtuf,sgtug; struct sgt2{ int T[N<<2],tg[N<<2]; void pu(int p){ T[p]=max(T[ls],T[rs]); }void pd(int p){ T[ls]=max(tg[p],T[ls]); T[rs]=max(tg[p],T[rs]); tg[ls]=max(tg[p],tg[ls]); tg[rs]=max(tg[p],tg[rs]); tg[p]=inf; }void bd(int p,int l,int r){ tg[p]=0;T[p]=0; bd(ls,l,mid);bd(rs,mid+1,r); }void upd(int p,int l,int r,int pl,int pr,int v){ if(pl<=l&&r<=pr){ T[p]=max(T[p],v);tg[p]=max(tg[p],v);return ; }pd(p); if(pl<=mid) upd(ls,l,mid,pl,pr,v); if(pr>mid) upd(rs,mid+1,r,pl,pr,v);pu(p); }int qry(int p,int l,int r,int pl,int pr){ if(pl<=l&&r<=pr) return T[p]; int res=0;pd(p); if(pl<=mid) res=max(res,qry(ls,l,mid,pl,pr)); if(pr>mid) res=max(res,qry(rs,mid+1,r,pl,pr));return res; } }sgtf,sgtg; int main(){ freopen("calm.in","r",stdin); freopen("calm.out","w",stdout); cin>>n>>s>>a>>b; for(int i=1;i<n;i++){ int u,v;cin>>u>>v; E[u].push_back(v);E[v].push_back(u); }if(a<=b){ cout<<1;return 0; }dfs1(1,0);dfs2(1,0,1); for(int i=1;i<=n;i++){ int now=i; if(hi[i]>a) continue; int to=b; for(int i=19;i>=0;i--){ } } return 0; }


测评信息: