1.
Implement Warshall’s algorithm to generate path matrix for a directed
graph.
#include <stdio.h> void
printMatrix(int matrix[][nV]); void
floydWarshall(int graph[][nV])
int matrix[nV][nV], i, j, k; for (i = 0; i < nV;
i++) for (j = 0; j < nV; j++) matrix[i][j] =
graph[i][j]; for (k = 0; k < nV; k++) { for (i
= 0; i < nV; i++) { for (j = 0; j < nV; j++) { if
(matrix[i][k] + matrix[k][j] < matrix[i][j])
matrix[i][j] = matrix[i][k] + matrix[k][j];
printMatrix(matrix);
void printMatrix(int matrix[][nV]) {
for (int i = 0; i < nV; i++) { for (int j
= 0; j < nV; j++) { if (matrix[i][j] ==
INF) printf("%4s", "INF") else
printf("%4d", matrix[i][j]);
printf("\n");
int main() { int graph[nV][nV] =
{{0, 3, INF, 5},
{2, 0, INF, 4},
{INF, 1, 0, INF}, {INF,
INF, 2, 0}};
floydWarshall(graph);
2.Implement Floyd Warshall’s algorithm to generate all pairs Shortest
paths for a directed graph for a directed weighted graph.
#include<iostream>
using namespace std;
int main(){
int m,i,j,k; cout<<"Number of Vertics will be: "; cin>>m; long
A[m][m],P[m][m]; cout<<"Enter the Adjacency Matrix Below in
"<<m<<"x"<<m<<" size:"<<endl; for(i=0;i<m;i++){ for(j=0;j<m;j++){
cin>>A[i][j]; if(A[i][j]!=0)P[i][j]=1; else P[i][j]=0;
}
cout<<endl;
for(i=0;i<m;i++){
for(j=0;j<m;j++){
for(k=0;k<m;k++){
P[i][j]=P[i][j]+P[i][k]*P[k][j];
if(P[i][j]!=0)P[i][j]=1;
cout<<"Path Matrix :"<<endl;
for(i=0;i<m;i++){ for(j=0;j<m;j++)
cout<<P[i][j]<<" ";
cout<<endl;
cout<<endl;
return 0;