#include<stdio.h>
#include<stdlib.h>
#define INF 9999999
#define MaxSize 50
typedef struct{
char vex[MaxSize];
int edge[MaxSize][MaxSize];
int vexnum,arcnum;
}MGraph;
void Floyd(MGraph G){
int A[MaxSize][MaxSize],path[MaxSize][MaxSize];
for(int i=0;i<G.vexnum;i++){ //初始化A和path[]
for(int j=0;j<G.vexnum;j++){
A[i][j]=G.edge[i][j];
path[i][j]=-1;
}
}
for(int k=0;k<G.vexnum;k++){
for(int i=0;i<G.vexnum;i++){
for(int j=0;j<G.vexnum;j++){
if(A[i][j]>A[i][k]+A[k][j]){
path[i][j]=k;
A[i][j]=A[i][k]+A[k][j];
}
}
}
}
}
int main(){
MGraph G;
int dist[MaxSize],path[MaxSize],i;
G.vexnum=4;G.arcnum=4;
G.vex[0]='A';G.vex[1]='B';G.vex[2]='C';G.vex[3]='D';
G.edge[0][0]=INF;G.edge[0][1]=4 ;G.edge[0][2]=6 ;G.edge[0][3]=2;
G.edge[1][0]=4 ;G.edge[1][1]=INF;G.edge[1][2]=INF;G.edge[1][3]=INF;
G.edge[2][0]=6 ;G.edge[2][1]=INF;G.edge[2][2]=INF;G.edge[2][3]=1;
G.edge[3][0]=2 ;G.edge[3][1]=INF;G.edge[3][2]=1 ;G.edge[3][3]=INF;
Floyd(G);
return 0;
}
邻接矩阵弗洛伊德
最新推荐文章于 2022-03-27 18:56:36 发布