Submission #1293751

#TimeUsernameProblemLanguageResultExecution timeMemory
1293751wyf1202Vinjete (COI22_vinjete)C++17
100 / 100
194 ms40508 KiB
#include<bits/stdc++.h> using namespace std; #define X first #define Y second #define pb emplace_back #define int long long const int M=2e5+5; int n,m,cnt,ans[M],L[M],R[M],pos[M]; vector<pair<int,int>>g[M]; struct Tree{ struct node{ int l,r,sm,tag; }t[M<<2]; #define ls p<<1 #define rs p<<1|1 #define mid (t[p].l+t[p].r>>1) inline void pushup(int p){ if(t[p].tag)t[p].sm=pos[t[p].r+1]-pos[t[p].l]; else if(t[p].l!=t[p].r)t[p].sm=t[ls].sm+t[rs].sm; else t[p].sm=0; } inline void build(int l,int r,int p){ t[p].l=l,t[p].r=r; if(l==r)return; build(l,mid,ls),build(mid+1,r,rs); } inline void update(int l,int r,int k,int p){ if(l<=t[p].l&&t[p].r<=r){ t[p].tag+=k,pushup(p); return; } if(l<=mid)update(l,r,k,ls); if(r>mid) update(l,r,k,rs); pushup(p); } }T; inline void dfs(int x,int fa){ ans[x]=T.t[1].sm; for(auto [y,id]:g[x]){ if(y==fa)continue; T.update(L[id],R[id],1,1),dfs(y,x), T.update(L[id],R[id],-1,1); } return; } signed main(){ scanf("%lld%lld",&n,&m); for(int i=1,u,v;i<n;++i) scanf("%lld%lld%lld%lld",&u,&v,L+i,R+i), g[u].pb(v,i),g[v].pb(u,i), pos[++cnt]=L[i],pos[++cnt]=R[i]+1; sort(pos+1,pos+1+cnt); cnt=unique(pos+1,pos+1+cnt)-pos-1; for(int i=1;i<n;++i) L[i]=lower_bound(pos+1,pos+1+cnt,L[i])-pos, R[i]=upper_bound(pos+1,pos+1+cnt,R[i])-pos-1; T.build(1,cnt,1),dfs(1,0); for(int i=2;i<=n;++i) printf("%lld\n",ans[i]); return 0; }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:47:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |         scanf("%lld%lld",&n,&m);
      |         ~~~~~^~~~~~~~~~~~~~~~~~
Main.cpp:49:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   49 |                 scanf("%lld%lld%lld%lld",&u,&v,L+i,R+i),
      |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...