floyd模板
算法思路
每次枚举点设置为桥边(中转点),每次试探是否有路径长度被更改
重复操作直到每个点都插入完成
//动态规划 多源最短路 Floyd
//邻接矩阵存图 初始化点到自己设为0 其他为正无穷
//枚举每一个桥边,依次松弛操作
const int n=105;
int g[n][n],p[n][n];
//打印桥点 中序遍历
void path(int i,int j){
if(p[i][j]==0) return;
int k = p[i][j];
path(i,k);
cout << k << " ";
path(k,j);
}
void floyd(){
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(g[i][j]>g[i][k]+g[k][j]){
g[i][j] = g[i][k]+g[k][j];
p[i][j] = k;
}
}
}
}
}

浙公网安备 33010602011771号