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:
Quick Intro to Spring Cloud Configuration
Spring Web Annotations
Using Optional with Jackson
Spring Boot - Scheduling
Java Program to Implement LinkedList API
Java Program to Convert a Decimal Number to Binary Number using Stacks
XML-Based Injection in Spring
Java Program to Implement Stack API
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Java Program to Implement Skip List
Guide to ThreadLocalRandom in Java
Split a String in Java
4 tính chất của lập trình hướng đối tượng trong Java
Một số từ khóa trong Java
HashMap trong Java hoạt động như thế nào?
JUnit5 @RunWith
Java Program to Find Strongly Connected Components in Graphs
Hướng dẫn Java Design Pattern – Adapter
Spring Security and OpenID Connect
Spring Boot - Admin Client
Hướng dẫn Java Design Pattern – Memento
Merging Streams in Java
Serve Static Resources with Spring
Hướng dẫn Java Design Pattern – Bridge
Java Program for Douglas-Peucker Algorithm Implementation
Java Program to Implement Gale Shapley Algorithm
Java Program to Perform Quick Sort on Large Number of Elements
Quick Guide to Spring MVC with Velocity
Introduction to Spring Cloud Rest Client with Netflix Ribbon
Phương thức tham chiếu trong Java 8 – Method References
Java Program to Create a Random Graph Using Random Edge Generation
Java Program to Perform Insertion in a BST