初始化
for(i=0;i<n;i++)
for(j=0;j<n;j++){
if(i!=j){
matrix[i][j]=max;
}
path[i][j]=j;
}
for(i=0;i<m;i++) {
scanf("%d%d%d",&x,&y,&z);
matrix[x][y]=z;
matrix[y][x]=z;
}
逻辑替换过程代码
for(k=0;k<n;k++){//中转节点
for(i=0;i<n;i++){//起点
for(j=0;j<n;j++) {//终点
//如果借助中转节点,其权值比原权值小,则进行替换
if(matrix[i][k]+matrix[k][j]<matrix[i][j]) {
//替换
matrix[i][j]=matrix[i][k]+matrix[k][j];
//记录i到j的中转节点k
path[i][j]=path[i][k];
}
}
}
}
结果分析