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:
Configuring a DataSource Programmatically in Spring Boot
So sánh Array và ArrayList trong Java
Converting Between a List and a Set in Java
Java Program to Check Whether Graph is DAG
Java Program to Implement Hash Tables with Quadratic Probing
Java Program to Implement Knight’s Tour Problem
Difference Between Wait and Sleep in Java
New Features in Java 11
REST Web service: Basic Authentication trong Jersey 2.x
JWT – Token-based Authentication trong Jersey 2.x
Java Program to Implement Insertion Sort
Java Program to Implement Extended Euclid Algorithm
Java Program to Implement Vector API
Adding Shutdown Hooks for JVM Applications
New Features in Java 13
Extra Login Fields with Spring Security
New Features in Java 12
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Convert String to int or Integer in Java
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Từ khóa this và super trong Java
Chuyển đổi Array sang ArrayList và ngược lại
How to Store Duplicate Keys in a Map in Java?
Giới thiệu Google Guice – Injection, Scope
Spring Boot - Application Properties
Overview of the java.util.concurrent
Split a String in Java
Java Program to Implement Gauss Jordan Elimination
Copy a List to Another List in Java
Spring 5 WebClient
A Quick Guide to Spring MVC Matrix Variables
Spring Cloud – Adding Angular