Write a C Program to implement Floyd’s Algorithm
C Program
#include<stdio.h>
#include<conio.h>
int min(int,int);
void floyds(int p[10][10],int n) {
int a,b,c;
for (c=1;c<=n;c++)
for (a=1;a<=n;a++)
for (b=1;b<=n;b++)
if(a==b)
p[a][b]=0; else
p[a][b]=min(p[a][b],p[a][c]+p[c][b]);
}
int min(int x,int y) {
if(x<y)
return(x); else
return(y);
}
void main() {
int p[10][10],w,n,e,u,v,a,b;
;
clrscr();
printf("\n Enter the number of vertices:");
scanf("%d",&n);
printf("\n Enter the number of edges:\n");
scanf("%d",&e);
for (a=1;a<=n;a++) {
for (b=1;b<=n;b++)
p[a][b]=999;
}
for (a=1;a<=e;a++) {
printf("\n Enter the end vertices of edge%d with its weight \n",a);
scanf("%d%d%d",&u,&v,&w);
p[u][v]=w;
}
printf("\n Matrix of input data:\n");
for (a=1;a<=n;a++) {
for (b=1;b<=n;b++)
printf("%d \t",p[a][b]);
printf("\n");
}
floyds(p,n);
printf("\n Transitive closure:\n");
for (a=1;a<=n;a++) {
for (b=1;b<=n;b++)
printf("%d \t",p[a][b]);
printf("\n");
}
printf("\n The shortest paths are:\n");
for (a=1;a<=n;a++)
for (b=1;b<=n;b++) {
if(i!=b)
printf("\n <%d,%d>=%d",a,b,p[a][b]);
}
getch();
}
👈
👉