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 8 Predicate Chain
Java Program to Implement Uniform-Cost Search
Simple Single Sign-On with Spring Security OAuth2
Convert XML to JSON Using Jackson
How to Set TLS Version in Apache HttpClient
Spring MVC + Thymeleaf 3.0: New Features
Java – Write a Reader to File
Guide to Character Encoding
Java Program to Implement Gauss Seidel Method
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Java Program to Compute Discrete Fourier Transform Using Naive Approach
Reactive Flow with MongoDB, Kotlin, and Spring WebFlux
LinkedList trong java
Guide to Guava Table
Java Program to Generate Randomized Sequence of Given Range of Numbers
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Immutable ArrayList in Java
Java Program to Perform Preorder Non-Recursive Traversal of a Given Binary Tree
Adding Shutdown Hooks for JVM Applications
Merging Two Maps with Java 8
How to Read HTTP Headers in Spring REST Controllers
Tiêu chuẩn coding trong Java (Coding Standards)
Java Program to Find the GCD and LCM of two Numbers
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
Guide to the Synchronized Keyword in Java
Spring Security Basic Authentication
How to Count Duplicate Elements in Arraylist
Java Program to Find the Minimum Element of a Rotated Sorted Array using Binary Search approach
Java Program to Implement Sorted Circularly Singly Linked List
Java Program to Implement CopyOnWriteArraySet API
Registration with Spring Security – Password Encoding
Introduction to Spring Data REST