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:
Count Occurrences of a Char in a String
Flattening Nested Collections in Java
Spring REST API + OAuth2 + Angular (using the Spring Security OAuth legacy stack)
Lớp lồng nhau trong java (Java inner class)
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
Apache Commons Collections BidiMap
Java Program to Implement EnumMap API
New Features in Java 10
Returning Custom Status Codes from Spring Controllers
Java Program to Represent Graph Using Linked List
Convert Time to Milliseconds in Java
Java Program to Decode a Message Encoded Using Playfair Cipher
Consuming RESTful Web Services
Spring MVC and the @ModelAttribute Annotation
Java Program to Find the GCD and LCM of two Numbers
A Guide to HashSet in Java
Introduction to Spring Data MongoDB
Java Program to Find Minimum Element in an Array using Linear Search
Java NIO2 Path API
Java Program to Implement the MD5 Algorithm
Java Program to Implement SynchronosQueue API
Integer Constant Pool trong Java
Java Program to Check Cycle in a Graph using Topological Sort
Java Program to Represent Linear Equations in Matrix Form
Java Program to Implement IdentityHashMap API
Chương trình Java đầu tiên
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Setting the Java Version in Maven
Java Program to Describe the Representation of Graph using Incidence Matrix
Spring MVC Custom Validation
Tạo ứng dụng Java RESTful Client với thư viện OkHttp