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:
Java Program to Find Location of a Point Placed in Three Dimensions Using K-D Trees
Java Program to Implement Floyd Cycle Algorithm
Spring Boot - Apache Kafka
The StackOverflowError in Java
Mệnh đề Switch-case trong java
Java Program to Implement CopyOnWriteArraySet API
Guide to java.util.concurrent.Locks
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Using JWT with Spring Security OAuth
Retrieve User Information in Spring Security
Object Type Casting in Java
How to Iterate Over a Stream With Indices
JUnit 5 @Test Annotation
Injecting Prototype Beans into a Singleton Instance in Spring
Introduction to Using FreeMarker in Spring MVC
Java Program to Implement LinkedBlockingQueue API
Spring Cloud Connectors and Heroku
Java Program to Perform Searching Using Self-Organizing Lists
Tránh lỗi NullPointerException trong Java như thế nào?
Java Program to Implement Adjacency List
Control the Session with Spring Security
Java Program to Implement Stack
Java Program to Implement Doubly Linked List
Guide to the Volatile Keyword in Java
Collect a Java Stream to an Immutable Collection
Custom JUnit 4 Test Runners
Java Program to Implement Heap Sort Using Library Functions
Java Program to Implement K Way Merge Algorithm
Java Program to Optimize Wire Length in Electrical Circuit
Java Program to Check the Connectivity of Graph Using BFS
The Registration Process With Spring Security
Reactive WebSockets with Spring 5