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:

Introduction to Eclipse Collections
Java Program to Check Whether Topological Sorting can be Performed in a Graph
Logging in Spring Boot
Java Program to Implement Hash Tables
Control Structures in Java
Java Program to Implement Heap’s Algorithm for Permutation of N Numbers
Lớp Arrarys trong Java (Arrays Utility Class)
Spring @RequestParam Annotation
Java Program to Implement Leftist Heap
ThreadPoolTaskExecutor corePoolSize vs. maxPoolSize
Redirect to Different Pages after Login with Spring Security
Spring Boot: Customize the Jackson ObjectMapper
Sorting in Java
Java Program to Implement Word Wrap Problem
A Guide to Spring Cloud Netflix – Hystrix
Spring Security – security none, filters none, access permitAll
Jackson vs Gson
Spring Boot - Zuul Proxy Server and Routing
Send an email using the SMTP protocol
Java Program to Solve the 0-1 Knapsack Problem
Allow user:password in URL
Java Program to Solve TSP Using Minimum Spanning Trees
Hướng dẫn Java Design Pattern – Chain of Responsibility
How to Get the Last Element of a Stream in Java?
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
Limiting Query Results with JPA and Spring Data JPA
Java Program to Implement Cubic convergence 1/pi Algorithm
Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure)
Tính đóng gói (Encapsulation) trong java
The Guide to RestTemplate
Java Program to Perform Postorder Recursive Traversal of a Given Binary Tree
Lập trình mạng với java