This Java program, to perform the bfs traversal of a given undirected graph in the form of the adjacency matrix and check for the connectivity of the graph.the bfs traversal makes use of a queue.
Here is the source code of the Java program to check the connectivity of the undirected graph using BFS. 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.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class UndirectedConnectivityBFS
{
private Queue<Integer> queue;
public UndirectedConnectivityBFS()
{
queue = new LinkedList<Integer>();
}
public void bfs(int adjacency_matrix[][], int source)
{
int number_of_nodes = adjacency_matrix.length - 1;
int[] visited = new int[number_of_nodes + 1];
int i, element;
visited = 1;
queue.add(source);
while (!queue.isEmpty())
{
element = queue.remove();
i = element;
while (i <= number_of_nodes)
{
if (adjacency_matrix[element][i] == 1 && visited[i] == 0)
{
queue.add(i);
visited[i] = 1;
}
i++;
}
}
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_no_nodes, source;
Scanner scanner = null;
try
{
System.out.println("Enter the number of nodes in the graph");
scanner = new Scanner(System.in);
number_no_nodes = scanner.nextInt();
int adjacency_matrix[][] = new int[number_no_nodes + 1][number_no_nodes + 1];
System.out.println("Enter the adjacency matrix");
for (int i = 1; i <= number_no_nodes; i++)
for (int j = 1; j <= number_no_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();
UndirectedConnectivityBFS undirectedConnectivity= new UndirectedConnectivityBFS();
undirectedConnectivity.bfs(adjacency_matrix, source);
} catch (InputMismatchException inputMismatch)
{
System.out.println("Wrong Input Format");
}
scanner.close();
}
}
$javac UndirectedConnectivityBFS.java $java UndirectedConnectivityBFS Enter the number of nodes in the graph 5 Enter the adjacency matrix 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Enter the source for the graph 1 The graph is disconnected
Related posts:
Jackson vs Gson
So sánh ArrayList và Vector trong Java
Java Program to Delete a Particular Node in a Tree Without Using Recursion
Java Concurrency Interview Questions and Answers
String Processing with Apache Commons Lang 3
Java Program to Implement Counting Sort
Java – Convert File to InputStream
Hướng dẫn Java Design Pattern – State
Exploring the Spring 5 WebFlux URL Matching
Using the Map.Entry Java Class
Java Program to Implement Multi-Threaded Version of Binary Search Tree
Introduction to Spliterator in Java
Configure a RestTemplate with RestTemplateBuilder
Java Program to Implement Hash Tables Chaining with Binary Trees
Immutable ArrayList in Java
Spring Boot - OAuth2 with JWT
Java Program to Solve the 0-1 Knapsack Problem
Spring Security – Reset Your Password
Java Program to Implement Nth Root Algorithm
Convert a Map to an Array, List or Set in Java
Request Method Not Supported (405) in Spring
Tạo ứng dụng Java RESTful Client với thư viện OkHttp
Apache Commons Collections OrderedMap
Java Program to Implement Depth-limited Search
Using Java Assertions
Câu lệnh điều khiển vòng lặp trong Java (break, continue)
Flattening Nested Collections in Java
Giới thiệu Java Service Provider Interface (SPI) – Tạo các ứng dụng Java dễ mở rộng
Java TreeMap vs HashMap
Java 8 Collectors toMap
Adding Shutdown Hooks for JVM Applications
Guide to the ConcurrentSkipListMap