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:
Finding the Differences Between Two Lists in Java
Java Program to Create a Balanced Binary Tree of the Incoming Data
Sort a HashMap in Java
Instance Profile Credentials using Spring Cloud
Registration – Password Strength and Rules
Java Program to Perform Insertion in a BST
Servlet 3 Async Support with Spring MVC and Spring Security
Apache Commons Collections Bag
Java 8 Stream API Analogies in Kotlin
Generate Spring Boot REST Client with Swagger
Changing Annotation Parameters At Runtime
Java Program to Perform LU Decomposition of any Matrix
Java Program to Implement Counting Sort
The XOR Operator in Java
RegEx for matching Date Pattern in Java
Java Program to Implement Shell Sort
Quick Guide on Loading Initial Data with Spring Boot
Form Validation with AngularJS and Spring MVC
An Intro to Spring Cloud Vault
Convert Time to Milliseconds in Java
Java Program to Implement Min Heap
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Mapping a Dynamic JSON Object with Jackson
Life Cycle of a Thread in Java
A Guide to JUnit 5
Java Program to Implement the linear congruential generator for Pseudo Random Number Generation
Spring JDBC
Java Program to Encode a Message Using Playfair Cipher
Java Program to Implement Iterative Deepening
Service Registration with Eureka
Debugging Reactive Streams in Java
String Operations with Java Streams