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:

Java Program to Check whether Undirected Graph is Connected using DFS
Transaction Propagation and Isolation in Spring @Transactional
Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions
Java Program to Implement Dijkstra’s Algorithm using Queue
Exploring the Spring 5 WebFlux URL Matching
@DynamicUpdate with Spring Data JPA
Encode a String to UTF-8 in Java
Receive email by java client
Template Engines for Spring
Spring Boot - Enabling Swagger2
REST Web service: Upload và Download file với Jersey 2.x
OAuth2 for a Spring REST API – Handle the Refresh Token in AngularJS
Java Program to Implement Interpolation Search Algorithm
Send email with SMTPS (eg. Google GMail)
Java Program to Implement Graph Coloring Algorithm
Weak References in Java
Hướng dẫn Java Design Pattern – Builder
Java Program to Implement a Binary Search Tree using Linked Lists
Guide to PriorityBlockingQueue in Java
String Operations with Java Streams
Introduction to Spring Boot CLI
REST Web service: Tạo ứng dụng Java RESTful Client với Jersey Client 2.x
Java Program to Implement Caesar Cypher
LIKE Queries in Spring JPA Repositories
The Thread.join() Method in Java
Tính đa hình (Polymorphism) trong Java
Java String Conversions
Java Program to Implement Sorted Circularly Singly Linked List
Java Program to Find Number of Spanning Trees in a Complete Bipartite Graph
Java Program to Check if a Given Graph Contain Hamiltonian Cycle or Not
Java Program to Perform Searching Based on Locality of Reference
Java Program to Implement RoleList API