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:
A Guide to Java SynchronousQueue
How To Serialize and Deserialize Enums with Jackson
Dockerizing a Spring Boot Application
Spring Boot - Interceptor
Java Program to Construct an Expression Tree for an Infix Expression
Spring Security Basic Authentication
Java Program to Represent Graph Using Incidence List
Java 8 Predicate Chain
Generating Random Dates in Java
Java Program to Perform Naive String Matching
Show Hibernate/JPA SQL Statements from Spring Boot
Instance Profile Credentials using Spring Cloud
Spring Boot - Tracing Micro Service Logs
Spring MVC and the @ModelAttribute Annotation
Copy a List to Another List in Java
Tìm hiểu về xác thực và phân quyền trong ứng dụng
Quick Guide to Spring Controllers
Send email with JavaMail
Predicate trong Java 8
Vòng lặp for, while, do-while trong Java
Injecting Prototype Beans into a Singleton Instance in Spring
Tính đa hình (Polymorphism) trong Java
Tránh lỗi NullPointerException trong Java như thế nào?
HashSet trong java
Java Program to Generate All Pairs of Subsets Whose Union Make the Set
Guide to the Volatile Keyword in Java
Convert Hex to ASCII in Java
Jackson Exceptions – Problems and Solutions
Java Program to find the maximum subarray sum O(n^2) time(naive method)
Jackson – Bidirectional Relationships
Java Program to Implement Solovay Strassen Primality Test Algorithm
Giới thiệu Swagger – Công cụ document cho RESTfull APIs