typedef struct MGraph{
int vexnum,arcnum;
int AdjMatrix[vertex_num][vertex_num];
int vertex[vertex_num];
}MGraph;//图的存储使用邻接矩阵表示
vector<int> p[vertex_num][vertex_num];//记录两两之间的最短路径
int ShortestPath_FLOYD(MGraph G)
{
int D[vertex_num][vertex_num];//记录两两节点间的最短距离
int ShortestPath_FLOYD(MGraph G)
for (int v=0;v<G.vexnum;v++)
{//初始化
for (int w=0;w<G.vexnum;w++)
{
vector<int> temp_vec_w;
D[v][w]=G.AdjMatrix[v][w];
if (D[v][w]<MaxInt)
{
p[v][w].push_back(v);
p[v][w].push_back(w);
}
}
}
for (int u=0;u<G.vexnum;u++)
{
for (int v=0;v<G.vexnum;v++)
{
for (int w=0;w<G.vexnum;w++)
{
if (D[v][u]+D[u][w]<D[v][w])
{
D[v][w]=D[v][u]+D[u][w];
p[v][w]=p[u][w];
p[v][w].erase(p[v][w].begin());
p[v][w].insert(p[v][w].begin(),p[v][u].begin(),p[v][u].end());
}
}
}
}
return 0;
}
最短路径 Floyd算法
最新推荐文章于 2020-07-02 15:38:49 发布