Java Program to Find All Pairs Shortest Path

This Java program is to find all pairs shortest path.This program finds the shortest distance between every pair of vertex in the graph.

Here is the source code of the Java program to find all pairs shortest path. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.

import java.util.Scanner;
 
public class AllPairShortestPath
{
    private int distancematrix[][];
    private int numberofvertices;
    public static final int INFINITY = 999;
 
    public AllPairShortestPath(int numberofvertices)
    {
        distancematrix = new int[numberofvertices + 1][numberofvertices + 1];
        this.numberofvertices = numberofvertices;
    }
 
    public void allPairShortestPath(int adjacencymatrix[][])
    {
        for (int source = 1; source <= numberofvertices; source++)
        {
            for (int destination = 1; destination <= numberofvertices; destination++)
            {
                distancematrix[destination] = adjacencymatrix[destination];
            }
        }
 
        for (int intermediate = 1; intermediate <= numberofvertices; intermediate++)
        {
            for (int source = 1; source <= numberofvertices; source++)
            {
                for (int destination = 1; destination <= numberofvertices; destination++)
                {
                    if (distancematrix[intermediate] + distancematrix[intermediate][destination]
                                         < distancematrix[destination])
                        distancematrix[destination] = distancematrix[intermediate] 
                                         + distancematrix[intermediate][destination];
                }
            }
        }
 
        for (int source = 1; source <= numberofvertices; source++)
            System.out.print("\t" + source);
 
        System.out.println();
        for (int source = 1; source <= numberofvertices; source++)
        {
            System.out.print(source + "\t");
            for (int destination = 1; destination <= numberofvertices; destination++)
            {
                System.out.print(distancematrix[destination] + "\t");
            }
            System.out.println();
        }
    }
 
    public static void main(String... arg)
    {
        int adjacency_matrix[][];
        int numberofvertices;
 
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the number of vertices");
        numberofvertices = scan.nextInt();
 
        adjacency_matrix = new int[numberofvertices + 1][numberofvertices + 1];
        System.out.println("Enter the Weighted Matrix for the graph");
        for (int source = 1; source <= numberofvertices; source++)
        {
            for (int destination = 1; destination <= numberofvertices; destination++)
            {
                adjacency_matrix[destination] = scan.nextInt();
                if (source == destination)
                {
                    adjacency_matrix[destination] = 0;
                    continue;
                }
                if (adjacency_matrix[destination] == 0)
                {
                    adjacency_matrix[destination] = INFINITY;
                }
            }
        }
 
        System.out.println("The Transitive Closure of the Graph");
        AllPairShortestPath allPairShortestPath= new AllPairShortestPath(numberofvertices);
        allPairShortestPath.allPairShortestPath(adjacency_matrix);
 
        scan.close();
    }
}
$javac AllPairShortestPath.java
$java AllPairShortestPath
 
Enter the number of vertices
4
 
Enter the Weighted Matrix for the graph
0 0 3 0
2 0 0 0 
0 7 0 1
6 0 0 0
 
The Transitive Closure of the Graph
 
	1	2	3	4
1	0	10	3	4	
2	2	0	5	6	
3	7	7	0	1	
4	6	16	9	0

Related posts:

“Stream has already been operated upon or closed” Exception in Java
Base64 encoding và decoding trong Java 8
Xử lý ngoại lệ đối với trường hợp ghi đè phương thức trong java
Calling Stored Procedures from Spring Data JPA Repositories
Check If Two Lists are Equal in Java
Java Program to Implement a Binary Search Algorithm for a Specific Search Sequence
Comparing Arrays in Java
Introduction to Spring Cloud Stream
Java Program to Print the Kind of Rotation the AVL Tree is Undergoing
How To Serialize and Deserialize Enums with Jackson
The Dining Philosophers Problem in Java
Java Program to Implement the One Time Pad Algorithm
Java Program to Decode a Message Encoded Using Playfair Cipher
Java Program to Permute All Letters of an Input String
Java Program to Describe the Representation of Graph using Incidence List
A Quick JUnit vs TestNG Comparison
Spring Cloud Series – The Gateway Pattern
Java Program to Implement Leftist Heap
Java Multi-line String
Giới thiệu Google Guice – Dependency injection (DI) framework
Copy a List to Another List in Java
Java Program for Douglas-Peucker Algorithm Implementation
Java Program to Implement Jarvis Algorithm
Java Program to Implement wheel Sieve to Generate Prime Numbers Between Given Range
Guide to the Fork/Join Framework in Java
Debug a HttpURLConnection problem
Spring AMQP in Reactive Applications
Abstract class và Interface trong Java
String Joiner trong Java 8
Java Program to Perform Optimal Paranthesization Using Dynamic Programming
Java Program to Implement TreeSet API
Java Program to Implement Find all Cross Edges in a Graph