Advertisement
Riz1Ahmed

Warshall Algorithm

Feb 19th, 2019
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. /***********  Warshall Algorithm  *************
  2. Given a wighted graph with N node & E edges.
  3. Find all possible shortest path.    **********/
  4. #include <bits/stdc++.h>
  5. using namespace std;
  6. int main(){
  7.     int n,e,u,v,w,i,j,k,ans=0;
  8.     cin>>n>>e;
  9.     int mat[n+2][n+2];
  10.     for (i=0; i<=n; i++) for (j=i; j<=n; j++)
  11.         mat[i][j]=mat[j][i]=1e7;
  12.     while (e--) cin>>u>>v>>w, mat[v][u]=mat[u][v]=w;
  13.  
  14.     puts("\nThe matrix is");
  15.     for (i=1; i<=n; i++){
  16.         for (j=1; j<=n; j++)
  17.             printf(mat[i][j]==1e7 ? " -1 ":"%3d ",mat[i][j]);
  18.         puts("");
  19.     }
  20.     for (k=1; k<=n; k++) ///Warshall ALGO
  21.         for (i=1; i<=n; i++)
  22.             for (j=1; j<=n; j++)
  23.                 if ( i!=j && mat[i][k]+mat[k][j] < mat[i][j])
  24.                     mat[i][j] = mat[j][i] = mat[i][k] + mat[k][j];
  25.     puts("\nNow the matrix is");
  26.     for (i=1; i<=n; i++){
  27.         for (j=1; j<=n; j++)
  28.             printf(mat[i][j]==1e7 ? " -1 ":"%3d ",mat[i][j]);
  29.         puts("");
  30.     }
  31.     return 0;
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement