算法思想
该算法是为了求出所有点与点之间最短的距离,可以通过n次调用dijkstra算法来求出,也可以采用此算法,该算法通过不断在两点之间加入点来获取;两点之间最短的距离,直到所有的点都加入后,求出的值就是最小的距离。
代码实现
需要存储邻接矩阵的数组p,还有存储各点之间路径的字符串数组p2。 首先若两点之间是直接相连的,邻接矩阵中对应的元素赋值为它们之间的权,然后从0结点开始一直到n节点,不断地向各个边之间加入节点,判断加入后的距离是否比原先的小,然后变更p和path中的值,这样一直到到循环结束,获得的就是各点与各点之间最小的距离。
代码语言:javascript复制 for(int i=0;i<b;i )
{
cin>>tail>>head;
cin>>p[tail][head];
}
for(int i=0;i<a;i )
{
p[i][i]=0;
}
for(int k=0;k<a;k )
{
for(int i=0;i<a;i )
{
for(int j=0;j<a;j )
{
if((p[i][k] p[k][j])<p[i][j])
{
p[i][j]=p[i][k] p[k][j];
p2[i][j]=p2[i][k];
p2[i][j].push_back(48 k);
p2[i][j] =p2[k][j];
}
}
}
}