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 Compute Discrete Fourier Transform Using the Fast Fourier Transform Approach
Java Program to Implement Interval Tree
HttpClient Timeout
Java Program to Check Whether a Directed Graph Contains a Eulerian Path
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Practical Java Examples of the Big O Notation
Chuyển đổi giữa các kiểu dữ liệu trong Java
Java Program to Represent Graph Using 2D Arrays
Hướng dẫn Java Design Pattern – Intercepting Filter
Guide to the Java ArrayList
Loại bỏ các phần tử trùng trong một ArrayList như thế nào?
Java Program to Find the Minimum Element of a Rotated Sorted Array using Binary Search approach
Recommended Package Structure of a Spring Boot Project
Java Program to Generate Random Partition out of a Given Set of Numbers or Characters
Java Program to Optimize Wire Length in Electrical Circuit
Java Program to Implement Skip List
Hướng dẫn Java Design Pattern – Bridge
Spring REST with a Zuul Proxy
Quick Guide on Loading Initial Data with Spring Boot
Spring MVC and the @ModelAttribute Annotation
Java Program to Find Maximum Element in an Array using Binary Search
Spring Cloud – Bootstrapping
Adding Parameters to HttpClient Requests
Java Program to Implement Splay Tree
Java Program to Implement Branch and Bound Method to Perform a Combinatorial Search
HttpClient with SSL
Sử dụng CountDownLatch trong Java
Java Program to Solve Travelling Salesman Problem for Unweighted Graph
Simplify the DAO with Spring and Java Generics
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
An Intro to Spring Cloud Contract
How to Read HTTP Headers in Spring REST Controllers