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:
Check if there is mail waiting
Converting String to Stream of chars
Spring Boot - Enabling HTTPS
Java Program to Implement Graph Coloring Algorithm
Most commonly used String methods in Java
Constructor Injection in Spring with Lombok
Guide to ThreadLocalRandom in Java
Map Interface trong java
XML-Based Injection in Spring
Java Program to Implement Tarjan Algorithm
Java Program to Find Strongly Connected Components in Graphs
Java Program to Perform Finite State Automaton based Search
Java Program to Find Basis and Dimension of a Matrix
Jackson – Decide What Fields Get Serialized/Deserialized
An Intro to Spring Cloud Security
Java Program to Solve a Matching Problem for a Given Specific Case
Java Program to Implement Shell Sort
Toán tử trong java
Java Program to find the maximum subarray sum using Binary Search approach
Converting a List to String in Java
Spring JDBC
A Quick Guide to Spring Cloud Consul
Guide to Mustache with Spring Boot
Guide to the Volatile Keyword in Java
Java Program to Implement Iterative Deepening
A Guide to JUnit 5
Biểu thức Lambda trong Java 8 – Lambda Expressions
Java Program to Find the GCD and LCM of two Numbers
Java Program to Implement Naor-Reingold Pseudo Random Function
Exploring the Spring 5 WebFlux URL Matching
Java Program to Implement Min Hash
Send email with authentication