Submission #210850

#TimeUsernameProblemLanguageResultExecution timeMemory
210850LawlietDynamic Diameter (CEOI19_diameter)C++17
24 / 100
5025 ms12536 KiB
#include <bits/stdc++.h> using namespace std; typedef long long int lli; const int MAXN = 100010; int n, q; int weight[MAXN]; lli maxW; lli lastAns; lli prof[MAXN]; vector< int > adj[MAXN]; vector< int > indEdge[MAXN]; void DFS(int cur, int p) { for(int i = 0 ; i < adj[cur].size() ; i++) { int viz = adj[cur][i]; int ind = indEdge[cur][i]; if( viz == p ) continue; prof[viz] = prof[cur] + weight[ind]; DFS( viz , cur ); } } int getFarthest() { int opt = 1; for(int i = 2 ; i <= n ; i++) if( prof[opt] < prof[i] ) opt = i; return opt; } lli diameter() { prof[1] = 0; DFS( 1 , 1 ); int cur = getFarthest(); prof[cur] = 0; DFS( cur , cur ); return prof[ getFarthest() ]; } int main() { scanf("%d %d %lld",&n,&q,&maxW); for(int i = 1 ; i < n ; i++) { int U, V, W; scanf("%d %d %d",&U,&V,&W); adj[U].push_back( V ); adj[V].push_back( U ); indEdge[U].push_back( i ); indEdge[V].push_back( i ); weight[i] = W; } for(int i = 1 ; i <= q ; i++) { lli d, e; scanf("%lld %lld",&d,&e); d = ( d + lastAns )%( n - 1 ) + 1; e = ( e + lastAns )%maxW; weight[d] = e; lastAns = diameter(); printf("%lld\n",lastAns); } }

Compilation message (stderr)

diameter.cpp: In function 'void DFS(int, int)':
diameter.cpp:22:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0 ; i < adj[cur].size() ; i++)
                  ~~^~~~~~~~~~~~~~~~~
diameter.cpp: In function 'int main()':
diameter.cpp:59:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d %lld",&n,&q,&maxW);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
diameter.cpp:64:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d %d",&U,&V,&W);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~
diameter.cpp:78:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld %lld",&d,&e);
   ~~~~~^~~~~~~~~~~~~~~~~~~
#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...