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:
Convert Hex to ASCII in Java
Converting Between a List and a Set in Java
A Guide to LinkedHashMap in Java
Collect a Java Stream to an Immutable Collection
Java Program to Perform Partial Key Search in a K-D Tree
Java Program to Implement ArrayDeque API
Java Program to Search for an Element in a Binary Search Tree
Spring Boot - Introduction
Giới thiệu Json Web Token (JWT)
HashMap trong Java hoạt động như thế nào?
Java Program to Perform the Shaker Sort
Java Program to Delete a Particular Node in a Tree Without Using Recursion
Java Program to Implement Max Heap
Using Optional with Jackson
Java Program to Implement Warshall Algorithm
HashSet trong Java hoạt động như thế nào?
Java Program to Use Dynamic Programming to Solve Approximate String Matching
Jackson Annotation Examples
Phân biệt JVM, JRE, JDK
Java Program to Implement Randomized Binary Search Tree
How to use the Spring FactoryBean?
Java Program to Describe the Representation of Graph using Incidence List
Working with Network Interfaces in Java
Java Program to Generate Random Hexadecimal Byte
Remove All Occurrences of a Specific Value from a List
Java – Byte Array to Reader
Java 14 Record Keyword
Java Program to Implement Attribute API
Spring REST API + OAuth2 + Angular
Java Program to Implement Min Hash
Luồng Daemon (Daemon Thread) trong Java
Java Program to Implement Selection Sort