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 Set Data Structure
Migrating from JUnit 4 to JUnit 5
Java – String to Reader
Java Program to Implement Direct Addressing Tables
Toán tử instanceof trong java
Java Program to Implement Shunting Yard Algorithm
Working with Tree Model Nodes in Jackson
Spring’s RequestBody and ResponseBody Annotations
Guide to CopyOnWriteArrayList
Java Program to Implement Strassen Algorithm
Java Program to Compare Binary and Sequential Search
Java Program to Find the Edge Connectivity of a Graph
Guide to CountDownLatch in Java
Java Program to Implement the Binary Counting Method to Generate Subsets of a Set
The Difference Between Collection.stream().forEach() and Collection.forEach()
Merging Streams in Java
Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions
Spring Cloud Connectors and Heroku
Java Program to Represent Graph Using Adjacency Matrix
Composition, Aggregation, and Association in Java
Instance Profile Credentials using Spring Cloud
Java Program to Solve Set Cover Problem assuming at max 2 Elements in a Subset
Spring Data JPA Delete and Relationships
The Dining Philosophers Problem in Java
Spring WebClient Requests with Parameters
XML-Based Injection in Spring
Hướng dẫn sử dụng String Format trong Java
Java Program to Implement K Way Merge Algorithm
Java Program to Perform Partition of an Integer in All Possible Ways
Java Program to Generate a Random Subset by Coin Flipping
Inheritance with Jackson
Beans and Dependency Injection