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 "shortcut.h"
#include<bits/stdc++.h>
#define INF 1000000
#define F first
#define S second
using namespace std;
typedef pair<int, int> ii;
typedef vector<ii> vii;
vector<vector<ii> > adj;
int ext[1000], len[1000];
vector<bool> vis;
int furth;
int dist;
int diamet;
long long distdfs(int s, int t){
vis[s] = true;
if(s==t) return dist;
for(int i=0;i<adj[s].size();i++){
if(!vis[adj[s][i].F]){
dist+=adj[s][i].S;
if(distdfs(adj[s][i].F, t)) return dist;
dist-=adj[s][i].S;
}
}
return 0;
}
int m;
long long find_diameter(){
int maxdiam = 0;
int prsum[m];
prsum[0] = len[0];
for(int i=1;i<m;i++) prsum[i] = prsum[i-1] + len[i];
for(int i=0;i<m;i++){
for(int j=0;j<m;j++){
maxdiam = max(maxdiam, ext[i] + prsum[j] - prsum[i-1] + ext[j]);
}
}
return maxdiam;
}
long long find_shortcut(int n, vector<int> l, vector<int> d, int c){
m = n;
for(int i=0;i<n;i++) ext[i] = d[i], len[i]=l[i];
adj.assign(n, vii());
for(int i=0;i<n-1;i++){
adj[i].push_back(ii(i+1, l[i]));
adj[i+1].push_back(ii(i, l[i]));
}
long long diameter = find_diameter();
for(int i=0;i<n;i++){
for(int j=0;j<i;j++){
//cout<<i<<" "<<j<<endl;
dist = 0;
vis.assign(n, false);
distdfs(i, j);
dist+=ext[i] + ext[j];
long long cc = c + ext[i] + ext[j];
//cout<<dist<<" "<<cc<<endl;
if(dist==diameter){
//cout<<"try\n";
//diameter = min(diameter, diameterleft(i) + c + diameterright(j));
diameter = cc;
return diameter;
}
}
}
return diameter;
}
Compilation message (stderr)
shortcut.cpp: In function 'long long int distdfs(int, int)':
shortcut.cpp:19:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=0;i<adj[s].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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |