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:
Java Program to Implement Ternary Search Tree
JUnit 5 for Kotlin Developers
Java Program to Implement Cubic convergence 1/pi Algorithm
Java Program to Generate Random Numbers Using Middle Square Method
Hướng dẫn sử dụng Lớp FilePermission trong java
New Features in Java 15
Comparing Arrays in Java
Java Program to Perform Complex Number Multiplication
Java Program to Implement Sorted Circularly Singly Linked List
Spring Cloud Bus
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Converting Strings to Enums in Java
SOAP Web service: Authentication trong JAX-WS
Java InputStream to String
Java – Delete a File
Semaphore trong Java
Java Program to Implement Graph Coloring Algorithm
Spring Data MongoDB – Indexes, Annotations and Converters
Java Web Services – Jersey JAX-RS – REST và sử dụng REST API testing tools với Postman
Java Program to Implement Adjacency List
Introduction to Spring Cloud OpenFeign
Auditing with JPA, Hibernate, and Spring Data JPA
Java Program to Implement ArrayList API
Java – InputStream to Reader
Một số nguyên tắc, định luật trong lập trình
Từ khóa throw và throws trong Java
Spring Boot Gradle Plugin
Remove HTML tags from a file to extract only the TEXT
What is Thread-Safety and How to Achieve it?
Java Program to Check Whether a Directed Graph Contains a Eulerian Path
Java Program to Implement Knapsack Algorithm
Using JWT with Spring Security OAuth