1 条题解
-
1XzyStudio (admin) LV 8 MOD RP++ 机房蒟蒻 tayz @ 2023-10-21 10:50:33
超喜欢的\(O(n^3)\)复杂度的最短路算法
基于DP实现。相当于是对于从\(u\)到\(v\),枚举中间节点\(k\),来计算最短路。
#include<bits/stdc++.h> using namespace std; int n, m, ans; int dis[101][101], a[10001];//距离数组及必经之路数组 int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ scanf("%d",&a[i]);//输入必经之路 } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ scanf("%d",&dis[i][j]);//输入距离 } } for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) // i, j, k全部是从1~n for(int j=1;j<=n;j++) dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]); for(int i=2;i<=m;i++){ ans+=dis[a[i-1]][a[i]];//计数 } printf("%d",ans);//输出计数器 return 0; }
- 1