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>
using namespace std;
typedef long long ll;
#define F first
#define S second
#define pb(x) push_back(x)
const ll mod=1e9+7;
ll r=0, c1, c2, c3;
vector<pair<ll, ll>> v[100001];
vector<ll> v1;
pair<ll, ll> a1, a2, p[100001];
bool b[100001];
pair<ll, ll> dfs(ll xf, ll axf){
b[xf]=1;
pair<ll, ll> a3={xf, 0}, a4;
for(auto i : v[xf]){
if(i.F!=axf){
p[i.F]={xf, i.S};
a4=dfs(i.F, xf);
if(a4.S+i.S>a3.S){
a3={a4.F, a4.S+i.S};
}
}
}
return a3;
}
int travelTime(int n, int m, int l, int A[], int B[], int T[]) {
for(int i=0; i<m; i++){
c1=A[i];
c2=B[i];
c3=T[i];
v[c1].push_back({c2, c3});
v[c2].push_back({c1, c3});
}
for(int i=0; i<n; i++){
if(!b[i]){
a1=dfs(i, i);
a2=dfs(a1.F, a1.F);
c1=a2.S;
c2=0;
c3=c1;
r=max(r, a2.S);
while(a2.F!=a1.F){
c1-=p[a2.F].S;
c2+=p[a2.F].S;
c3=min(c3, max(c1, c2));
a2.F=p[a2.F].F;
}
v1.push_back(c3);
}
}
if(v1.size()==1)return r;
sort(v1.begin(), v1.end());
reverse(v1.begin(), v1.end());
r=max(r, v1[0]+v1[1]+l);
for(int i=2; i<v1.size(); i++){
r=max(r, v1[0]+v1[i]+l);
r=max(r, v1[1]+v1[i]+l+l);
}
return r;
}
Compilation message (stderr)
dreaming.cpp: In function 'int travelTime(int, int, int, int*, int*, int*)':
dreaming.cpp:57:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
57 | for(int i=2; i<v1.size(); i++){
| ~^~~~~~~~~~
# | 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... |