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 Bresenham Line Algorithm
Tạo ứng dụng Java RESTful Client với thư viện Retrofit
Java Program to Implement Aho-Corasick Algorithm for String Matching
Java Program to Find the Number of Ways to Write a Number as the Sum of Numbers Smaller than Itself
Java Program to Implement Strassen Algorithm
Spring Boot - Twilio
Spring Boot - Interceptor
Prevent Brute Force Authentication Attempts with Spring Security
Spring Boot - Build Systems
Introduction to Spring Cloud Stream
New Stream Collectors in Java 9
Java Program to Implement Merge Sort Algorithm on Linked List
Spring WebClient and OAuth2 Support
Guide to Apache Commons CircularFifoQueue
Java Program to Implement Gauss Seidel Method
Spring Data MongoDB Transactions
Tính đóng gói (Encapsulation) trong java
Java Program to Implement String Matching Using Vectors
A Guide to the Java LinkedList
How to Convert List to Map in Java
Java Program to Implement Meldable Heap
Creating Docker Images with Spring Boot
Quick Guide to Spring Controllers
Java Program to Use Dynamic Programming to Solve Approximate String Matching
Java Program to Implement Sieve Of Eratosthenes
Guide to ThreadLocalRandom in Java
So sánh Array và ArrayList trong Java
Guide to java.util.concurrent.BlockingQueue
Java Program to Implement the Bin Packing Algorithm
Java Program to Find the Connected Components of an UnDirected Graph
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect