This Java program,performs the DFS traversal on the given directed 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 directed 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 DirectedConnectivityDfs { private Stack<Integer> stack; public DirectedConnectivityDfs() { 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(); System.out.println("Enter the source for the graph"); source = scanner.nextInt(); DirectedConnectivityDfs directedConnectivity= new DirectedConnectivityDfs(); directedConnectivity.dfs(adjacency_matrix, source); }catch(InputMismatchException inputMismatch) { System.out.println("Wrong Input format"); } scanner.close(); } }
$javac DirectedConnectivityDfs.java $java DirectedConnectivityDfs 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:
Java Program to Implement Disjoint Sets
REST Web service: Basic Authentication trong Jersey 2.x
Custom JUnit 4 Test Runners
Send an email using the SMTP protocol
New Features in Java 8
Java Program to Use Dynamic Programming to Solve Approximate String Matching
Java Program to Implement Sorted Array
Period and Duration in Java
Join and Split Arrays and Collections in Java
Adding a Newline Character to a String in Java
Weak References in Java
Java Stream Filter with Lambda Expression
Exploring the Spring 5 WebFlux URL Matching
Checking for Empty or Blank Strings in Java
Different Ways to Capture Java Heap Dumps
Reactive WebSockets with Spring 5
Debug a JavaMail Program
Giới thiệu java.io.tmpdir
Java Program to Perform Insertion in a 2 Dimension K-D Tree
Merging Two Maps with Java 8
TreeSet và sử dụng Comparable, Comparator trong java
Java Program to Implement Find all Forward Edges in a Graph
Introduction to Java 8 Streams
Quick Intro to Spring Cloud Configuration
Convert XML to JSON Using Jackson
Introduction to the Java NIO Selector
Spring Boot - Securing Web Applications
Ignore Null Fields with Jackson
How to Manually Authenticate User with Spring Security
Spring Security Basic Authentication
Sắp xếp trong Java 8
Copy a List to Another List in Java