Java Program to Check whether Undirected Graph is Connected using BFS

This Java program, to perform the bfs traversal of a given undirected 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 undirected 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 UndirectedConnectivityBFS
{
    private Queue<Integer> queue;
 
    public UndirectedConnectivityBFS()
    {
        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();
 
            for (int i = 1; i <= number_of_nodes; i++)
            {
                for (int j = 1; j <= number_of_nodes; j++)
                {
                    if (adjacency_matrix[i][j] ==  1 && adjacency_matrix[j][i] == 0)
                    {
                        adjacency_matrix[j][i] = 1;
                    }
                }
            }
 
            System.out.println("Enter the source for the graph");
            source = scanner.nextInt();
 
            UndirectedConnectivityBFS undirectedConnectivity= new UndirectedConnectivityBFS();
            undirectedConnectivity.bfs(adjacency_matrix, source);
 
        } catch (InputMismatchException inputMismatch)
        {
            System.out.println("Wrong Input Format");
        }
        scanner.close();
    }
}
$javac UndirectedConnectivityBFS.java
$java UndirectedConnectivityBFS
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:

Integer Constant Pool trong Java
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
A Guide to Java SynchronousQueue
Guide to UUID in Java
Java Program to Implement the Alexander Bogomolny’s UnOrdered Permutation Algorithm for Elements Fro...
Java Program for Douglas-Peucker Algorithm Implementation
Reading an HTTP Response Body as a String in Java
How to Get the Last Element of a Stream in Java?
Java Program to Implement Sparse Matrix
Tạo chương trình Java đầu tiên sử dụng Eclipse
Fixing 401s with CORS Preflights and Spring Security
Loại bỏ các phần tử trùng trong một ArrayList như thế nào trong Java 8?
Migrating from JUnit 4 to JUnit 5
Introduction to Spring Security Expressions
The StackOverflowError in Java
Java Program to implement Priority Queue
Java Program to Implement Sieve Of Atkin
Supplier trong Java 8
Java Program to Implement Network Flow Problem
Configure a Spring Boot Web Application
Converting String to Stream of chars
A Guide to the Java ExecutorService
Java Program to Implement Aho-Corasick Algorithm for String Matching
Java NIO2 Path API
Connect through a Proxy
Default Password Encoder in Spring Security 5
Java Program to Implement Multi-Threaded Version of Binary Search Tree
Spring Data JPA and Null Parameters
Java Program to Use Boruvka’s Algorithm to Find the Minimum Spanning Tree
Hướng dẫn Java Design Pattern – Visitor
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Introduction to Spring Data MongoDB