#include "dreaming.h"
#include<bits/stdc++.h>
using namespace std;
int d[3][1<<17],f[1<<17],W[1<<17],w,e,D,X=-1,Y=-1,Z=-1,R;
vector<pair<int,int> >v[1<<17];
void U(int x,int o){
f[x]++;
if(o<2&&d[o][x]>=D)e=x,D=d[o][x];
if(o>1)D=min(D,max(d[1][x],d[2][x]));
for(auto y:v[x])if(f[y.first]<=o)d[o][y.first]=d[o][x]+y.second,U(y.first,o);
}
int travelTime(int N,int M,int L,int A[],int B[],int T[]){
while(M--)v[A[M]].push_back({B[M],T[M]}),v[B[M]].push_back({A[M],T[M]});
while(N--)if(!f[N])U(N,0),U(e,1),R=max(R,D),U(e,2),W[w++]=D,D=0;
while(w--){
if(Z<W[w])Z=W[w];
if(Y<W[w])Z=Y,Y=W[w];
if(X<W[w])Y=X,X=W[w];
}
return max(R,max(X,Z+(Z>=0)*L)+Y+(Y>=0)*L);
}
# | 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... |