Submission #85831

#TimeUsernameProblemLanguageResultExecution timeMemory
85831memetkagan44Untitled (POI11_dyn)C++11
100 / 100
1551 ms41440 KiB
#include<bits/stdc++.h> using namespace std; int n,m,cnt,ans,ar[300005],x,y; vector<int> v[300005]; int solve(int yer,int dad,int say){ int t=0,q=0; for(int i=0;i<v[yer].size();i++){ int go=v[yer][i]; if(dad==go) continue; int u=solve(go,yer,say); if(u==0) continue; if(u>0) q=max(q,u); else t=min(t,u); } if(abs(t)>=say){ ans++; return say; } if(t==0 && q==0) return (-1)*ar[yer]; if(q>abs(t)) return q-1; return t-1; } int ctr(int k){ ans=0; if(solve(1,0,k)<0) ans++; if(ans<=m) return 1; return 0; } int main(){ scanf("%d %d",&n,&m); for(int i=1;i<=n;i++){ scanf("%d",&ar[i]); cnt+=ar[i]; } for(int i=1;i<n;i++){ scanf("%d %d",&x,&y); v[x].push_back(y); v[y].push_back(x); } if(cnt<=m){ printf("0\n"); return 0; } int l=1,r=n; while(l<=r){ int mid=(l+r)/2; if(ctr(mid)) r=mid-1; else l=mid+1; } printf("%d\n",l); return 0; }

Compilation message (stderr)

dyn.cpp: In function 'int solve(int, int, int)':
dyn.cpp:7:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i=0;i<v[yer].size();i++){
                     ~^~~~~~~~~~~~~~
dyn.cpp: In function 'int main()':
dyn.cpp:38:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d",&n,&m);
         ~~~~~^~~~~~~~~~~~~~~
dyn.cpp:40:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d",&ar[i]);
             ~~~~~^~~~~~~~~~~~~
dyn.cpp:44:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d %d",&x,&y);
             ~~~~~^~~~~~~~~~~~~~~
#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...
#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...