Submission #909134

#TimeUsernameProblemLanguageResultExecution timeMemory
909134ibm2006Dynamic Diameter (CEOI19_diameter)C++17
7 / 100
420 ms48720 KiB
#include<bits/stdc++.h> using namespace std; typedef long long int ll; ll n,i,j,k,l,r,x,y,z,w,s,t,h[1100000],ans,qu; vector<pair<ll,ll>> v[1100000]; pair<ll,ll> pq; multiset<ll> st; pair<ll,pair<ll,ll>> p[1100000],q[1100000]; pair<ll,ll> f(ll x,ll y) { ll i; pair<ll,ll> p={x,0},q; for(i=0;i<h[x];i++) { if(v[x][i].first==y) continue; q=f(v[x][i].first,x); if(q.second+v[x][i].second>p.second) { p={q.first,q.second+v[x][i].second}; } } return p; } int main() { scanf("%lld %lld %lld",&n,&qu,&w); for(i=1;i<n;i++) { scanf("%lld %lld %lld",&x,&y,&z); st.insert(-z); p[i]={x,{h[x],z}}; q[i]={y,{h[y],z}}; v[x].push_back({y,z}); v[y].push_back({x,z}); h[x]++; h[y]++; } for(i=1;i<=qu;i++) { scanf("%lld %lld",&x,&y); x=(x+ans)%(n-1); y=(y+ans)%w; x++; v[p[x].first][p[x].second.first].second=y; st.erase(st.find(-p[x].second.second)); p[x].second.second=y; st.insert(-y); v[q[x].first][q[x].second.first].second=y; q[x].second.second=y; //pq=f(1,0); //ans=f(pq.first,0).second; if(n==2) ans=(*st.begin()); else ans=(*st.begin())+(*(++st.begin())); ans*=-1; printf("%lld\n",ans); } }

Compilation message (stderr)

diameter.cpp: In function 'int main()':
diameter.cpp:27:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   27 |     scanf("%lld %lld %lld",&n,&qu,&w);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
diameter.cpp:30:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |         scanf("%lld %lld %lld",&x,&y,&z);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
diameter.cpp:41:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   41 |         scanf("%lld %lld",&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...