#include<stdio.h>
#include<string.h>
#include<malloc.h>
#define maxnum 50
typedef struct MGraph{
int data[maxnum][maxnum];
int num;
};
int Create(MGraph *G){
scanf("%d",&G->num);
for(int i=0;i<G->num;i++){
for(int j=0;j<G->num;j++){
scanf("%d",&G->data[i][j]);
if(i!=j&&G->data[i][j]==0)
G->data[i][j]=99999;
}
}
}
int Floyd(MGraph *G){
for(int k=0;k<G->num;k++){
for(int i=0;i<G->num;i++){
for(int j=0;j<G->num;j++){
if(G->data[i][j]>G->data[i][k]+G->data[k][j])
G->data[i][j]=G->data[i][k]+G->data[k][j];
}
}
}
return 1;
}
int Output(MGraph G){
for(int i=0;i<G.num;i++){
for(int j=0;j<G.num;j++){
if(i!=j&&G.data[i][j]==99999){
printf("-1 ");
continue;
}
printf("%d ",G.data[i][j]);
}
printf("\n");
}
}
int main(){
MGraph G;
Create(&G);
Floyd(&G);
Output(G);
}
(C语言)弗洛伊德最短路径算法
最新推荐文章于 2023-06-04 18:03:53 发布