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:
Introduction to Using FreeMarker in Spring MVC
How To Serialize and Deserialize Enums with Jackson
Spring MVC + Thymeleaf 3.0: New Features
Spring Cloud – Bootstrapping
Using Java Assertions
Java Program to Generate All Subsets of a Given Set in the Gray Code Order
Apache Commons Collections OrderedMap
Java Program to Implement Binomial Tree
Integer Constant Pool trong Java
Java Program to Implement Levenshtein Distance Computing Algorithm
Ways to Iterate Over a List in Java
Serve Static Resources with Spring
Converting Between a List and a Set in Java
Java Program to Describe the Representation of Graph using Incidence Matrix
Filtering a Stream of Optionals in Java
Spring Boot - Bootstrapping
Java Program to Implement Hash Tables chaining with Singly Linked Lists
Lớp lồng nhau trong java (Java inner class)
Spring Boot Application as a Service
Java Program to Implement Stack using Linked List
Guide to java.util.Formatter
Java String to InputStream
Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree
Java Program to Perform Addition Operation Using Bitwise Operators
Hướng dẫn Java Design Pattern – Dependency Injection
Chương trình Java đầu tiên
Java Program to Perform Insertion in a BST
Java Program to Implement Leftist Heap
Marker Interface trong Java
Java Program to Check whether Directed Graph is Connected using DFS
Java – Combine Multiple Collections
Spring Boot - Zuul Proxy Server and Routing