Highways
原题:Highways
题意:高速公路上有n个站,n-1条单向路径,新来的市长希望加两条路满足任意两个城市都能相互到达,并使得距离最短
解法:看样例数据都看得出来,头尾延伸一条反向路,并使得两条路径重复覆盖的距离最小,即找一条最短的路
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
int f[50000], sum=0, min, k=1;
for(int i = 0; i < n-1; i++){
cin >> f[i];
}
for(int i = n-2; i > 0; i--){
f[i]=f[i]-f[i-1];
}
for(int i = 0; i < n-1; i++) sum += f[i];
min = 2*1e9;
for(int i = 1; i < n-2; i++){
if (f[i] < min){
min=f[i];
k=i;
}
}
sum += min;
if(n < 4){
cout << "0" << endl;
} else {
cout << sum << endl;
cout << k+2 << " " << "1" << " " << n << " " << k+1 << endl;
}
}