暴力踩标程!!!
过于浅显不解释。。。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n,a[205][205];
bool vis[205];
int main(){
scanf("%d",&n);
if(n<=2){
puts("0");return 0;
}
for(int i=1;i<=n;i++){
for(int p=i+1;p<=n;p++) scanf("%d",&a[i][p]),a[p][i]=a[i][p];
}
int ans=1e9;
for(int i=1;i<=n;i++){
for(int p=i+1;p<=n;p++){
memset(vis,0,sizeof(vis));
vis[i]=vis[p]=1;
for(int j=1;j<=n;j++){
if(j==i||j==p||a[i][j]>a[i][p]||a[p][j]>a[i][p]) continue;
bool t=1;
for(int k=1;k<j;k++){
if(vis[k]&&a[k][j]>a[i][p]){
t=0;break;
}
}
vis[j]=t;
}
int mx=0;
for(int j=1;j<=n;j++){
if(!vis[j]){
for(int k=1;k<j;k++){
if(!vis[k]) mx=max(mx,a[k][j]);
}
}
}
ans=min(ans,mx+a[i][p]);
}
}
printf("%d",ans);
return 0;
}