P1359 租用游艇
#include <bits/stdc++.h>
using namespace std;
int a[210][210];
int main ()
{
memset(a,0x3f,sizeof(a)); //将数组a中所有值变成最大值
int n;
cin >> n;
for(int i = 1;i <= n - 1;i ++){
for(int j = i + 1;j <= n;j ++){
if(i == j){
a[i][j] = 0;
}
else{
cin >> a[i][j]; //存i到j之间的价钱
}
}
}
for(int k = 1;k <= n;k ++) //Floyd算法
for(int i = 1;i <= n;i ++)
for(int j = 1;j <= n;j ++){
a[i][j] = min(a[i][j],a[i][k] + a[k][j]);
}
cout << a[1][n];
return 0;
}
这是一个经典的Floyd算法的题