0% found this document useful (0 votes)
16 views3 pages

Practical No: 07 Class: SE Date of Practical

This document contains a C program to find all pairs shortest paths using Floyd-Warshall algorithm. It takes a 2D array representing a graph as input, performs the Floyd-Warshall algorithm to find the shortest paths between all pairs of vertices, and prints the final shortest path matrix. The time complexity of the Floyd-Warshall algorithm is O(n3) where n is the number of vertices in the graph.

Uploaded by

dwrre
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views3 pages

Practical No: 07 Class: SE Date of Practical

This document contains a C program to find all pairs shortest paths using Floyd-Warshall algorithm. It takes a 2D array representing a graph as input, performs the Floyd-Warshall algorithm to find the shortest paths between all pairs of vertices, and prints the final shortest path matrix. The time complexity of the Floyd-Warshall algorithm is O(n3) where n is the number of vertices in the graph.

Uploaded by

dwrre
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

SHREEYASH PRATISHTHAN’S

Shreeyash Technical Campus


SHREEYASH COLLEGE OF ENGINEERING & TECHNOLOGY

DEPARTMENT OF COMPUTER SCIENCE ENGINEERING

Practical No: 07 Class: SE Date of Practical: / /

Aim: Write a program for finding all pairs shortest path


Program:
#include<stdio.h>
int min (int, int);
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++)
if (i == j)
p[i][j] = 0;
else
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);
}

void
main ()
{
int p[10][10], w, n, e, u, v, i, j;;
printf ("\n Enter the number of vertices:");
scanf ("%d", &n);
printf ("\n Enter the number of edges:\n");
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 ("\n Enter the end vertices of edge%d with its weight \n", i);
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 ("\n Transitive 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 shortest paths are:\n");
for (i = 1; i <= n; i++)
for (j = 1; j <= n; j++)
{
if (i != j)
printf ("\n <%d,%d>=%d", i, j, p[i][j]);
}
}
Output:

Conclusion:
Time Complexity Analysis:
 The Triple-for-loop that follows has constant-time body, and thus takes o(n3)time.

 Thus, the whole algorithm takes O(n3)time

Roll Number:
Name of Student:
Sign with Date
Grade
of Faculty:

You might also like