This Java program, to perform the bfs traversal of a given directed 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 directed 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 DirectedConnectivityBFS { private Queue<Integer> queue; public DirectedConnectivityBFS() { 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(); System.out.println("Enter the source for the graph"); source = scanner.nextInt(); DirectedConnectivityBFS directedConnectivity= new DirectedConnectivityBFS(); directedConnectivity.bfs(adjacency_matrix, source); } catch (InputMismatchException inputMismatch) { System.out.println("Wrong Input Format"); } scanner.close(); } }
$javac DirectedConnectivityBFS.java $java DirectedConnectivityBFS 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 – Unmarshall to Collection/Array
Spring Data JPA and Null Parameters
Getting the Size of an Iterable in Java
How to Define a Spring Boot Filter?
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
Partition a List in Java
Guide to Guava Multimap
Tránh lỗi ConcurrentModificationException trong Java như thế nào?
Java Program to Implement Disjoint Sets
Disable Spring Data Auto Configuration
Guide to @JsonFormat in Jackson
Spring MVC Custom Validation
Introduction to Apache Commons Text
How to Convert List to Map in Java
Java Program to Implement Self organizing List
Java Program to Find a Good Feedback Edge Set in a Graph
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Convert XML to JSON Using Jackson
Java Program to Implement Disjoint Set Data Structure
Java Program to Implement Shunting Yard Algorithm
How to Use if/else Logic in Java 8 Streams
Java Program to Implement Sorted Vector
Java Collections Interview Questions
Java InputStream to String
Java – String to Reader
Java Program to Implement Karatsuba Multiplication Algorithm
Mệnh đề Switch-case trong java
Join and Split Arrays and Collections in Java
Java Program to Implement Sorted Doubly Linked List
Java Program to Check the Connectivity of Graph Using DFS
Hướng dẫn Java Design Pattern – MVC
Ignore Null Fields with Jackson