floyds

 #include<stdio.h>

#include<stdlib.h>
int min(int a, int b);

void floyds(int p[10][10],int n){
int i, j, k;
        for (k = 1; k <= n; k++)
            for (i = 1; i <= n; i++)
                for (j = 1; j <= n; j++)
                    p[i][j] = min(p[i][j], p[i][k] + p[k][j]);
}

int min(int a,int b){
    if(a<b)
        return a;
    else
        return b;
}

int main(){

    int p[10][10],w,n,e,u,v,i,j;
    printf("\nEnter no. of vertices: ");
    scanf("%d",&n);
    printf("\nEnter the no. of edges:");
    scanf("%d",&e);
 
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
           p[i][j]=999;

   for(i=1;i<=e;i++){
    printf("Enter end vertices and weight: ");
    scanf("%d%d%d",&u,&v,&w);
    p[u][v]=w;
  }
    printf("\n matrix of input data:\n");
    for(i=1;i<=n;i++){
      for(j=1;j<=n;j++){
        printf("%d\t",p[i][j]);
      printf("\n");
    }
  }

    floyds(p,n);

  printf("\nTransitive Closure: \n");
    for(i=1;i<=n;i++){
      for(j=1;j<=n;j++){
        printf("%d\t",p[i][j]);
    }
      printf("\n");
  }
 
    printf("\n The all pairs shorted path is\n");
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
          if(i!=j)
            printf("\n<%d%d>=%d\t",i,j,p[i][j]);
        }
        printf("\n");
    }
    return 0;
}



Comments