Java Program to Check whether Directed Graph is Connected using BFS

This Java program, to perform the bfs traversal of a given directed graph in the form of the adjacency matrix and check for the connectivity of the graph.the bfs traversal makes use of a queue.

Here is the source code of the Java program to check the connectivity of the directed graph using BFS. The Java program is successfully compiled and run on a Linux system. The program output is also shown below.

import java.util.InputMismatchException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
 
public class DirectedConnectivityBFS
{
    private Queue<Integer> queue;
 
    public DirectedConnectivityBFS()
    {
        queue = new LinkedList<Integer>();
    }
 
 
 
    public void bfs(int adjacency_matrix[][], int source)
    {
        int number_of_nodes = adjacency_matrix.length - 1;
        int[] visited = new int[number_of_nodes + 1];
        int i, element;
        visited = 1;
        queue.add(source);
 
        while (!queue.isEmpty())
        {
            element = queue.remove();
            i = element;
           while (i <= number_of_nodes)
           {
               if (adjacency_matrix[element][i] == 1 && visited[i] == 0)
               {
                   queue.add(i);
                   visited[i] = 1;
               }
               i++;
           }
        }
        boolean connected = false; 
 
        for (int vertex = 1; vertex <= number_of_nodes; vertex++)
        {
            if (visited[vertex] == 1)
            {
                connected = true;
            } else
            { 
                connected = false;
                break;
            }
        }
 
        if (connected)
        {
            System.out.println("The graph is connected");
        } else
        {
            System.out.println("The graph is disconnected");
        }
    } 
 
    public static void main(String... arg)
    {
        int number_no_nodes, source;
        Scanner scanner = null;
 
        try
        {   
            System.out.println("Enter the number of nodes in the graph");
            scanner = new Scanner(System.in);
            number_no_nodes = scanner.nextInt();
 
            int adjacency_matrix[][] = new int[number_no_nodes + 1][number_no_nodes + 1];
            System.out.println("Enter the adjacency matrix");
            for (int i = 1; i <= number_no_nodes; i++)
                for (int j = 1; j <= number_no_nodes; j++)
                    adjacency_matrix[i][j] = scanner.nextInt();
 
            System.out.println("Enter the source for the graph");
            source = scanner.nextInt();
 
            DirectedConnectivityBFS directedConnectivity= new DirectedConnectivityBFS();
            directedConnectivity.bfs(adjacency_matrix, source);
 
        } catch (InputMismatchException inputMismatch)
        {
            System.out.println("Wrong Input Format");
        }
        scanner.close();
    }
}
$javac DirectedConnectivityBFS.java
$java DirectedConnectivityBFS
Enter the number of nodes in the graph
5
Enter the adjacency matrix
0 1 1 1 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Enter the source for the graph
1
The graph is disconnected

Related posts:

Java Program to Represent Graph Using Incidence List
Easy Ways to Write a Java InputStream to an OutputStream
Adding Shutdown Hooks for JVM Applications
A Guide to LinkedHashMap in Java
Java Program to Implement Shoelace Algorithm
ThreadPoolTaskExecutor corePoolSize vs. maxPoolSize
Java Program to Compare Binary and Sequential Search
Partition a List in Java
Tính đa hình (Polymorphism) trong Java
Spring @RequestMapping New Shortcut Annotations
Java Program to Check for balanced parenthesis by using Stacks
Sử dụng Fork/Join Framework với ForkJoinPool trong Java
Java Program to Find Median of Elements where Elements are Stored in 2 Different Arrays
Java Program to Check Whether an Input Binary Tree is the Sub Tree of the Binary Tree
An Introduction to Java.util.Hashtable Class
Examine the internal DNS cache
Java Program to Find the Minimum value of Binary Search Tree
Java Program to Implement the Checksum Method for Small String Messages and Detect
Filtering a Stream of Optionals in Java
Introduction to Spring Cloud OpenFeign
Java Program to Emulate N Dice Roller
How to Get the Last Element of a Stream in Java?
Convert a Map to an Array, List or Set in Java
Predicate trong Java 8
Exploring the Spring 5 WebFlux URL Matching
Java Program to Find Basis and Dimension of a Matrix
Converting a Stack Trace to a String in Java
Java – File to Reader
Spring Data Reactive Repositories with MongoDB
Java Program to Decode a Message Encoded Using Playfair Cipher
Java Program to implement Circular Buffer
How to use the Spring FactoryBean?