This Java program,performs the DFS traversal on the given undirected 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 undirected 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 UndirectedConnectivityDfs
{
private Stack<Integer> stack;
public UndirectedConnectivityDfs()
{
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();
for (int i = 1; i <= number_of_nodes; i++)
{
for (int j = 1; j <= number_of_nodes; j++)
{
if (adjacency_matrix[i][j] == 1 && adjacency_matrix[j][i] == 0)
{
adjacency_matrix[j][i] = 1;
}
}
}
System.out.println("Enter the source for the graph");
source = scanner.nextInt();
UndirectedConnectivityDfs undirectedConnectivity= new UndirectedConnectivityDfs();
undirectedConnectivity.dfs(adjacency_matrix, source);
}catch(InputMismatchException inputMismatch)
{
System.out.println("Wrong Input format");
}
scanner.close();
}
}
$javac UndirectedConnectivityDfs.java $java UndirectedConnectivityDfs 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 Compute the Area of a Triangle Using Determinants
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Handling Errors in Spring WebFlux
Iterable to Stream in Java
Auditing with JPA, Hibernate, and Spring Data JPA
Java String Conversions
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
Ignore Null Fields with Jackson
Beans and Dependency Injection
Java Program to Find Median of Elements where Elements are Stored in 2 Different Arrays
The Registration API becomes RESTful
Spring Boot - Bootstrapping
Simple Single Sign-On with Spring Security OAuth2
Debug a HttpURLConnection problem
Java Program to Implement Threaded Binary Tree
Setting Up Swagger 2 with a Spring REST API
Java Program to Implement Park-Miller Random Number Generation Algorithm
Automatic Property Expansion with Spring Boot
Hướng dẫn Java Design Pattern – Dependency Injection
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect
Count Occurrences of a Char in a String
Immutable Objects in Java
Java – Reader to Byte Array
Java Program to Find Maximum Element in an Array using Binary Search
Converting Between an Array and a Set in Java
Vòng lặp for, while, do-while trong Java
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Một số từ khóa trong Java
Java Concurrency Interview Questions and Answers
Guide To CompletableFuture
Java Program to Implement ArrayList API
Quick Guide to Spring Controllers