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 Ternary Tree
Quick Guide to the Java StringTokenizer
How to Manually Authenticate User with Spring Security
Java Program to Implement Iterative Deepening
Sorting in Java
Debug a JavaMail Program
Use Liquibase to Safely Evolve Your Database Schema
Unsatisfied Dependency in Spring
Java Program to Implement ScapeGoat Tree
Phương thức tham chiếu trong Java 8 – Method References
Java Program to Perform Finite State Automaton based Search
DistinctBy in the Java Stream API
Introduction to Spring Data JDBC
Java Program to Generate All Possible Combinations Out of a, b, c, d, e
How to Round a Number to N Decimal Places in Java
Java Program to Perform Polygon Containment Test
Apache Commons Collections SetUtils
HttpAsyncClient Tutorial
Java Program to Find MST (Minimum Spanning Tree) using Prim’s Algorithm
Java Program to Implement Min Heap
Java – Write an InputStream to a File
Java Program to Find All Pairs Shortest Path
Guide to the Java TransferQueue
Vòng lặp for, while, do-while trong Java
Java Program to Construct an Expression Tree for an Postfix Expression
Guide to java.util.concurrent.Future
A Guide to HashSet in Java
Giới thiệu Design Patterns
Ways to Iterate Over a List in Java
JUnit 5 for Kotlin Developers
Login For a Spring Web App – Error Handling and Localization
Spring Security OAuth Login with WebFlux