弗洛伊德算法Floyed(求各顶点间最短路径):可打印最短路径

#include   
#include   
#include   
using namespace std;  
  
#define INFINITY 65535  
#define MAX_VERTEX_NUM 10  
  
typedef struct MGraph{  
    string vexs[10];//顶点信息  
    int arcs[10][10];//邻接矩阵  
    int vexnum, arcnum;//顶点数和边数  
}MGraph;  
  
int LocateVex(MGraph G, string u)//返回顶点u在图中的位置  
{  
    for(int i=0; i>G.vexnum>>G.arcnum;  
  
    cout<<"请输入顶点:";  
    for(i=0; i>G.vexs[i];  
  
    for(i=0; i>v1>>v2>>w;  
        i=LocateVex(G, v1);  
        j=LocateVex(G, v2);  
        G.arcs[i][j]=w;  
    }  
}  
  
//弗洛伊德算法求每一对顶点间的最短路径  
//p[v][w][i]表示当前求得的顶点v到顶点w的最短路径中的第i+1个顶点,这是打印最短路径的关键  
//D[v][w]表示当前求得的顶点v到顶点w的最短路径的长度  
void ShortestPath_FLOYD(MGraph G, int p[MAX_VERTEX_NUM][MAX_VERTEX_NUM][MAX_VERTEX_NUM], int D[][MAX_VERTEX_NUM])  
{  
    int u, v, w, i, j;  
      
    for(v=0; v

测试一:

测试二:


转载于:https://www.cnblogs.com/tham/p/6827201.html

你可能感兴趣的:(弗洛伊德算法Floyed(求各顶点间最短路径):可打印最短路径)