应用问题:
求图中任意两点的最短距离。
区分Dijkstra算法:
求单源最短路径。
Floyd算法原理:
前提:n节点,e条边的图。
执行过程:
对于每个顶点V,和任意顶点对(i, j), i!=j 且V!=i, V!=j
如果dd[i][j]>dd[i][v]+dd[v][j],则更新dd[i][j].
并将p[i][j]更改为V
初始
以0为中间点
同理 以1,2,3为中间点
如何用path数组找最短路径?
如果我们找1->0的最短路径:
递归式代码:
手写代码:
struct node{
int to;
int w;
};
map<string, int> si;//地点名转化为节点序号
map<int, string> is;
vector<node> G[maxn];//图:邻接表
int dd[maxn]