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 <bits/stdc++.h>
#include "dreaming.h"
using namespace std;
#define designed ios_base::sync_with_stdio(0);
#define by cin.tie(0);
#define AndreasK cout.tie(0);
//#define int long long
#define ii pair <int,int>
#define vi vector <int>
#define iii pair <int,ii>
#define vii vector <ii>
#define vc vector <char>
#define vb vector <bool>
vector <vii> g;
map <int,int> m;
vi v;
map <int,int> mn;
void dfs(int curr,int prev,int dist,int st){
v[curr]=st;
m[st]=max(m[st],dist);
for (auto nxt:g[curr]){
if (nxt.first!=prev)
dfs(nxt.first,curr,nxt.second+dist,st);
}
}
void dfs2(int curr,int prev,int dist,int st){
v[curr]=st;
mn[st]=min(mn[st],max(m[st]-dist,dist));
for (auto nxt:g[curr]){
if (nxt.first!=prev)
dfs2(nxt.first,curr,nxt.second+dist,st);
}
}
int travelTime(int N,int M,int L,int A[],int B[],int T[]){
g.assign(N,vii());
for (int c=0;c<M;c++){
g[A[c]].push_back({B[c],T[c]});
g[B[c]].push_back({A[c],T[c]});
}
m.clear();
int st=0;
v.assign(N,0);
for (int c=0;c<N;c++){
if (v[c]==0 && g[c].size()==1){
st++;
dfs(c,c,0,st);
}
}
mn.clear();
mn[1]=m[1];
mn[2]=m[2];
st=0;
v.assign(N,0);
for (int c=0;c<N;c++){
if (v[c]==0 && g[c].size()==1){
st++;
dfs2(c,c,0,st);
}
}
return mn[1]+mn[2]+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... |