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 Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Static Content in Spring WebFlux
Using JWT with Spring Security OAuth (legacy stack)
Examine the internal DNS cache
Giới thiệu luồng vào ra (I/O) trong Java
Set Interface trong Java
Spring Web Annotations
Guava Collections Cookbook
Chuyển đổi giữa các kiểu dữ liệu trong Java
Java Program to Implement Word Wrap Problem
Introduction to Spring Boot CLI
Spring Boot: Customize Whitelabel Error Page
Spring REST API + OAuth2 + Angular
Chuyển đổi từ HashMap sang ArrayList
Java Program to Find the Longest Path in a DAG
Java Program to find the number of occurrences of a given number using Binary Search approach
Java Program to Implement Shunting Yard Algorithm
A Guide to the Java LinkedList
Spring @RequestMapping New Shortcut Annotations
A Quick Guide to Using Keycloak with Spring Boot
Java Program to Find the Nearest Neighbor Using K-D Tree Search
Java Program to Implement K Way Merge Algorithm
Hướng dẫn Java Design Pattern – Singleton
Copy a List to Another List in Java
Java Stream Filter with Lambda Expression
Tips for dealing with HTTP-related problems
Java Program to Implement Quick sort
Java Program to Implement Affine Cipher
Converting between an Array and a List in Java
Spring Data JPA and Null Parameters
Java Program to Implement Knight’s Tour Problem
Java Program to Generate Random Numbers Using Multiply with Carry Method