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:

Check If a File or Directory Exists in Java
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Java Program to implement Bit Matrix
Introduction to Spring Method Security
Java Program to Perform Insertion in a 2 Dimension K-D Tree
Convert Time to Milliseconds in Java
A Quick Guide to Spring MVC Matrix Variables
Java Program to Implement Randomized Binary Search Tree
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Java CyclicBarrier vs CountDownLatch
Concurrent Test Execution in Spring 5
Java Program to Generate All Pairs of Subsets Whose Union Make the Set
A Quick JUnit vs TestNG Comparison
Java Program to Implement AVL Tree
Hướng dẫn Java Design Pattern – Chain of Responsibility
A Guide to TreeSet in Java
Java Program to Implement Jarvis Algorithm
Simultaneous Spring WebClient Calls
Introduction to Spring Cloud Netflix – Eureka
Spring 5 and Servlet 4 – The PushBuilder
Hamcrest Collections Cookbook
Java Program to Check whether Directed Graph is Connected using DFS
Java Program to Find k Numbers Closest to Median of S, Where S is a Set of n Numbers
Spring Data Reactive Repositories with MongoDB
New Features in Java 11
Java Program to Generate Random Partition out of a Given Set of Numbers or Characters
Adding Shutdown Hooks for JVM Applications
Java 8 Streams peek() API
Feign – Tạo ứng dụng Java RESTful Client
Simplify the DAO with Spring and Java Generics
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
wait() and notify() Methods in Java