【P1359 租用游艇】floyed最短路 模板题
https://www.luogu.org/problemnew/show/P1359


试题分析:

#include <iostream> #include <cstring> #include <string> using namespace std; int n,m; int a[210][210]; int main() { memset(a,0x7f,sizeof(a)); cin>>n; //输入游艇数量 for(int i=1;i<n;i++) { //读入数据,构建半矩形结构 for(int j=i+1;j<=n;j++) cin>>a[i][j]; } /* 输出floyed之前的矩阵存储结构 for(int i=1;i<=n;i++) { {for(int j=1;j<=n;j++) cout<<a[i][j]<<" "; } cout<<"\n"; } */ 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]) ; 这句可替代下面条件 if((k!=i)&&(k!=j)&&(j!=k)&&(a[i][j]>a[i][k]+a[k][j])) a[i][j]=a[i][k]+a[k][j]; //条件是避免自己到自己 cout<<a[1][n]<<endl; // floyed之后的矩阵存储结构 for(int i=1;i<=n;i++) { {for(int j=1;j<=n;j++) cout<<a[i][j]<<" "; } cout<<"\n"; }return 0; }
红框中为floyed后 存储结构,各点间最短距离。
浙公网安备 33010602011771号