Submission #909120

#TimeUsernameProblemLanguageResultExecution timeMemory
909120ibm2006Dynamic Diameter (CEOI19_diameter)C++17
24 / 100
5056 ms43440 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;
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);
        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;
        p[x].second.second=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;
        printf("%lld\n",ans);
    }
}

Compilation message (stderr)

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