Submission #433067

#TimeUsernameProblemLanguageResultExecution timeMemory
433067MilosMilutinovicDreaming (IOI13_dreaming)C++14
100 / 100
112 ms17264 KiB
#include "dreaming.h" #include <bits/stdc++.h> #define MAXN 100007 using namespace std; int dist[MAXN],par[MAXN]; vector<pair<int,int>> g[MAXN]; bool vis[MAXN]; void dfs1(int u,int p,int& i) { if(dist[u]>dist[i])i=u; if(p==-1)dist[u]=0; par[u]=p; for(auto [v,w]:g[u]) { if(v==p)continue; dist[v]=dist[u]+w; dfs1(v,u,i); } } void dfs2(int u,int p) { vis[u]=true; for(auto [v,w]:g[u])if(v!=p)dfs2(v,u); } int travelTime(int n, int m, int l, int* a, int* b, int* t) { for(int i=0;i<n;i++)g[i].clear(); for(int i=0;i<m;i++) { g[a[i]].push_back({b[i],t[i]}); g[b[i]].push_back({a[i],t[i]}); } int mx=0; vector<int> c; for(int i=0;i<n;i++) { if(vis[i])continue; int ind1=i;dfs1(i,-1,ind1); int ind2=i;dfs1(ind1,-1,ind2); int d=dist[ind2];mx=max(mx,d); for(int j=ind2;j>=0;j=par[j])d=min(d,max(dist[j],dist[ind2]-dist[j])); c.push_back(d); dfs2(i,-1); } sort(c.rbegin(),c.rend()); assert(!c.empty()); if(c.size()==1)return max(mx,c[0]); if(c.size()==2)return max(mx,c[0]+c[1]+l); return max({mx,c[0]+c[1]+l,c[1]+c[2]+2*l}); }

Compilation message (stderr)

dreaming.cpp: In function 'void dfs1(int, int, int&)':
dreaming.cpp:13:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   13 |     for(auto [v,w]:g[u])
      |              ^
dreaming.cpp: In function 'void dfs2(int, int)':
dreaming.cpp:23:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   23 |     for(auto [v,w]:g[u])if(v!=p)dfs2(v,u);
      |              ^
#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...