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:
Spring Security Login Page with React
Validate email address exists or not by Java Code
Java Program to Perform Partition of an Integer in All Possible Ways
Java NIO2 Path API
Apache Commons Collections OrderedMap
Allow user:password in URL
Java Program to Find the Peak Element of an Array O(n) time (Naive Method)
Guide to the Java Queue Interface
Java Program to Compute DFT Coefficients Directly
Instance Profile Credentials using Spring Cloud
Enum trong java
How to Define a Spring Boot Filter?
Handling URL Encoded Form Data in Spring REST
Java Program to Implement Sorted Circularly Singly Linked List
Java Program to Implement AA Tree
Send email with JavaMail
Java Program to Implement the Edmond’s Algorithm for Maximum Cardinality Matching
Java Program to Implement LinkedList API
Java Program to Perform integer Partition for a Specific Case
Removing all duplicates from a List in Java
Java – Try with Resources
Java Program to Implement Min Hash
Java Program to Implement RoleList API
Java Program to Perform Stooge Sort
Spring Boot - Google OAuth2 Sign-In
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Spring Security Registration – Resend Verification Email
ETL with Spring Cloud Data Flow
Introduction to Spring Security Expressions
Spring Boot - Google Cloud Platform
Handle EML file with JavaMail
Hướng dẫn Java Design Pattern – Visitor