I was going through this code for implementing Warshall's algorithm. I think the time complexity for this simple problem is huge because there are too many loops running here. The time complexity for this code should be \$O(n^3)\$. Is there a way to optimize this code so that the time complexity can be reduced a bit?#include<stdio.h>#include<unistd.h>#include<math.h>int maximum(int,int);void warshal(int p[10][10],int n){int i,j,k;for(i=1;i<=n;i++) for(j=1;j<=n;j++)   for(k=1;k<=n;k++)     p[i][j]=maximum(p[i][j],p[i][k]&&p[k][j]);}int maximum(int a,int b){                                                       ;if(a>b)return(a);elsereturn(b);}void main(){int p[10][10]={0},n,e,u,v,i,j; printf(\n Enter the number of vertices:); scanf(%d,&n); printf(\n input values now\n); for(i=1;i<=n;i++)  for(j=1;j<=n;j++)   scanf(%d,&p[i][j]);   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); } warshal(p,n); printf(\n Transitive closure: \n); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf(%d\t,p[i][j]); printf(\n); }  }
Warshall's algorithm for transitive closure
performance;beginner;c