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:
Hướng dẫn Java Design Pattern – Abstract Factory
Java Program to Implement the Monoalphabetic Cypher
A Guide to Concurrent Queues in Java
Registration with Spring Security – Password Encoding
The StackOverflowError in Java
Weak References in Java
Spring Data JPA and Null Parameters
Compact Strings in Java 9
Deploy a Spring Boot WAR into a Tomcat Server
OAuth2.0 and Dynamic Client Registration
Java Program to Perform Stooge Sort
Java Program to Implement Johnson’s Algorithm
Java Program to Test Using DFS Whether a Directed Graph is Weakly Connected or Not
Creating a Custom Starter with Spring Boot
Spring Boot - Logging
Java Program to Implement Gift Wrapping Algorithm in Two Dimensions
Java Program to Decode a Message Encoded Using Playfair Cipher
Updating your Password
Interface trong Java 8 – Default method và Static method
Tính trừu tượng (Abstraction) trong Java
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
Convert char to String in Java
Configure a Spring Boot Web Application
Java Program to Implement Randomized Binary Search Tree
Java Program to Implement Disjoint Sets
Spring Boot Integration Testing with Embedded MongoDB
Java Program to Generate Random Partition out of a Given Set of Numbers or Characters
Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree
Introduction to the Java NIO2 File API
Converting a Stack Trace to a String in Java
Java Program to Implement Sorted Doubly Linked List
Introduction to Spring Cloud CLI