注意事项: k 层循环不能内置
Floyd适用于求解全源最短路径问题,即对于给定的图G,求解任意两点之间的最短路径长度。
模板
#include<bits/stdc++.h>
using namespace std;
const int N=105;
int dis[N][N];
void Floyd(){
memset(dis,0x3f3f3f,sizeof(dis));//初始化为极大值
//初始化大部分时候需要放到读入前
//顶点i和j没有边直接相连则距离设为极大值,有边相连就是读入的距离
/*
for(int i=1;i<=n;i++)//自己到自己的距离设为 0
dis[i][i]=0;
*/
//可省略
for(int k=1;k<=n;k++)//k层循环不能内置
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(dis[i][k]+dis[k][j]<dis[i][j])//松弛
dis[i][j]=dis[i][k]+dis[k][j];
}
标签:int,极大值,算法,Floyd,读入,注意事项,dis From: https://www.cnblogs.com/kelanjie/p/17323928.html