题意
n座城市依次坐落一条单向大路边,接下来输入x1、x2等等表示和第一座城市分别的间隔。现在要求建两座桥起点终点不许相同,使无论车开到哪都能回到任意一座城市,求两座桥的总长度最短。
思路
首先城市数不能少于4,否则输出0。第一座城市和最后一座城市必须相连,那么就从中间找出最短的间隔长度加上第一座城市到最后一座城市的全长就行了。
代码
#include<iostream>
#include<limits.h>
using namespace std;
int main(){
int n,x;
cin>>n;
for(int i=0;i<n;i++){
cin>>x;
int c[50000],sum=0,min,k=1;
for(int j=0;j<x-1;j++){
cin>>c[j];
}
for(int j=x-2;j>0;j--){
c[j]=c[j]-c[j-1];
}
for(int j=0;j<x-1;j++)
sum+=c[j];
min=INT_MAX;
for(int j=1;j<x-2;j++){
if(c[j]<min){
min=c[j];
k=j;
}
}
sum+=min;
if(x<4){
cout<<"0"<<endl;
}
else{
cout<<sum<<endl;
cout<<k+2<<" "<<"1"<<" "<<x<<" "<<k+1<<endl;
}
cout<<endl;
}
return 0;
}