Java Program to Check whether Undirected Graph is Connected using DFS

This Java program,performs the DFS traversal on the given undirected graph represented by a adjacency matrix to check connectivity.the DFS traversal makes use of an stack.

Here is the source code of the Java program to check the connectivity of a undirected graph. 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.Scanner;
import java.util.Stack;
 
public class UndirectedConnectivityDfs
{
    private Stack<Integer> stack;
 
    public UndirectedConnectivityDfs() 
    {
        stack = new Stack<Integer>();
    } 
 
    public void dfs(int adjacency_matrix[][], int source)
    {
        int number_of_nodes = adjacency_matrix.length - 1;	
        int visited[] = new int[number_of_nodes + 1];		
        int element = source;		
        int i = source;	
        visited = 1;		
        stack.push(source);
 
        while (!stack.isEmpty())
        {
            element = stack.peek();
            i = element;	
	    while (i <= number_of_nodes)
	    {
     	        if (adjacency_matrix[element][i] == 1 && visited[i] == 0)
	        {
                    stack.push(i);
                    visited[i] = 1;
                    element = i;
                    i = 1;
	            continue;
                }
                i++;
	    }
            stack.pop();	
        }
        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_of_nodes, source;
        Scanner scanner = null;
 	try
        {
	    System.out.println("Enter the number of nodes in the graph");
            scanner = new Scanner(System.in);
            number_of_nodes = scanner.nextInt();
 
	    int adjacency_matrix[][] = new int[number_of_nodes + 1][number_of_nodes + 1];
	    System.out.println("Enter the adjacency matrix");
	    for (int i = 1; i <= number_of_nodes; i++)
	       for (int j = 1; j <= number_of_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(); 
 
            UndirectedConnectivityDfs undirectedConnectivity= new UndirectedConnectivityDfs();
            undirectedConnectivity.dfs(adjacency_matrix, source);	
 
        }catch(InputMismatchException inputMismatch)
        {
            System.out.println("Wrong Input format");
        }	
        scanner.close();	
    }	
}
$javac UndirectedConnectivityDfs.java
$java UndirectedConnectivityDfs
Enter the number of nodes in the graph
5
Enter the adjacency matrix
0 1 0 1 0
0 0 1 0 0
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
Enter the source for the graph
1
The graph is disconnected

Related posts:

Hướng dẫn Java Design Pattern – Prototype
Java Program to Check if a Given Graph Contain Hamiltonian Cycle or Not
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Java Program to Implement Bubble Sort
LinkedHashSet trong Java hoạt động như thế nào?
Assertions in JUnit 4 and JUnit 5
Java Program to Perform Encoding of a Message Using Matrix Multiplication
Guide to java.util.Formatter
Base64 encoding và decoding trong Java 8
Model, ModelMap, and ModelAndView in Spring MVC
Upload and Display Excel Files with Spring MVC
“Stream has already been operated upon or closed” Exception in Java
REST Web service: HTTP Status Code và xử lý ngoại lệ RESTful web service với Jersey 2.x
Java Program to Use the Bellman-Ford Algorithm to Find the Shortest Path
Guide to PriorityBlockingQueue in Java
Một số tính năng mới về xử lý ngoại lệ trong Java 7
Java Program to Implement Euclid GCD Algorithm
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
Tạo ứng dụng Java RESTful Client với thư viện Retrofit
Calling Stored Procedures from Spring Data JPA Repositories
Quick Guide on Loading Initial Data with Spring Boot
Java Program to Solve a Matching Problem for a Given Specific Case
Tránh lỗi NullPointerException trong Java như thế nào?
Map Serialization and Deserialization with Jackson
How to Set TLS Version in Apache HttpClient
Spring 5 Testing with @EnabledIf Annotation
The StackOverflowError in Java
Java Program to Generate a Random UnDirected Graph for a Given Number of Edges
Request Method Not Supported (405) in Spring
Các nguyên lý thiết kế hướng đối tượng – SOLID
A Guide to the Java ExecutorService
Java Program to Implement Floyd Cycle Algorithm