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:
How to Read a Large File Efficiently with Java
Java Program to Implement TreeSet API
Java Program to Check whether Graph is a Bipartite using BFS
Tính kế thừa (Inheritance) trong java
A Quick Guide to Using Keycloak with Spring Boot
Java Program to Implement Stack API
A Guide to the finalize Method in Java
Spring Security Basic Authentication
How to Find an Element in a List with Java
Hướng dẫn Java Design Pattern – MVC
The Order of Tests in JUnit
Spring JDBC
Java Program to Implement Fermat Primality Test Algorithm
Getting Started with Forms in Spring MVC
Java – Write a Reader to File
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Hướng dẫn Java Design Pattern – Bridge
Immutable Objects in Java
Sending Emails with Java
Spring Boot: Customize Whitelabel Error Page
Hướng dẫn sử dụng Java Generics
Spring Webflux and CORS
Java Program to Implement Efficient O(log n) Fibonacci generator
Java Program to Implement Hash Tables with Quadratic Probing
Display Auto-Configuration Report in Spring Boot
Java Program to Check if a Given Graph Contain Hamiltonian Cycle or Not
Jackson vs Gson
Java Program to Implement Best-First Search
Java Program to Implement Horner Algorithm
Spring MVC Setup with Kotlin
A Guide to Java SynchronousQueue
JPA/Hibernate Persistence Context