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:
Notify User of Login From New Device or Location
Request Method Not Supported (405) in Spring
How to Use if/else Logic in Java 8 Streams
An Intro to Spring Cloud Task
Java Streams vs Vavr Streams
Java Program to Implement Treap
Apache Commons Collections MapUtils
HttpClient Timeout
A Custom Media Type for a Spring REST API
Lớp Properties trong java
Basic Authentication with the RestTemplate
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
Simultaneous Spring WebClient Calls
Form Validation with AngularJS and Spring MVC
Quick Guide to java.lang.System
Spring Boot - Sending Email
Toán tử instanceof trong java
OAuth2.0 and Dynamic Client Registration
Guide to System.gc()
Java Program to Implement Find all Forward Edges in a Graph
How to Break from Java Stream forEach
Spring Boot Application as a Service
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Arrays.asList vs new ArrayList(Arrays.asList())
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Java Program to Implement Sorted Vector
Java Program for Douglas-Peucker Algorithm Implementation
Sử dụng CountDownLatch trong Java
Convert String to Byte Array and Reverse in Java
Java Program to Implement Wagner and Fisher Algorithm for online String Matching
Java Program to Implement Min Hash
Logout in an OAuth Secured Application