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:
How to Get All Spring-Managed Beans?
Chuyển đổi Array sang ArrayList và ngược lại
Phân biệt JVM, JRE, JDK
Working with Tree Model Nodes in Jackson
Hướng dẫn Java Design Pattern – Builder
Java List UnsupportedOperationException
Introduction to the Java ArrayDeque
Notify User of Login From New Device or Location
Spring AMQP in Reactive Applications
Assertions in JUnit 4 and JUnit 5
Java – Write to File
Java Program to Check if a Given Graph Contain Hamiltonian Cycle or Not
Java Program to Implement First Fit Decreasing for 1-D Objects and M Bins
Java Program to implement Bit Matrix
Java Scanner hasNext() vs. hasNextLine()
Apache Commons Collections Bag
Introduction to Liquibase Rollback
Java Program to Implement Doubly Linked List
Java Program to Generate a Graph for a Given Fixed Degree Sequence
New in Spring Security OAuth2 – Verify Claims
Java Program to Implement Knapsack Algorithm
Spring Security Remember Me
Ép kiểu trong Java (Type casting)
Java Program to find the number of occurrences of a given number using Binary Search approach
Hướng dẫn Java Design Pattern – Service Locator
Java Program to Implement Sparse Matrix
Uploading MultipartFile with Spring RestTemplate
Simplify the DAO with Spring and Java Generics
Java 8 and Infinite Streams
Java Program to Perform Postorder Recursive Traversal of a Given Binary Tree
Spring RestTemplate Error Handling
Lớp lồng nhau trong java (Java inner class)