This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |