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:
Period and Duration in Java
Spring Boot - Build Systems
Lập trình đa luồng với CompletableFuture trong Java 8
Java Program to Compute the Volume of a Tetrahedron Using Determinants
Serialize Only Fields that meet a Custom Criteria with Jackson
Send an email using the SMTP protocol
Java Program to implement Dynamic Array
The DAO with Spring and Hibernate
Check if a String is a Palindrome in Java
Introduction to Apache Commons Text
Removing all duplicates from a List in Java
Java Program to Implement HashTable API
Converting Between Byte Arrays and Hexadecimal Strings in Java
Java Program to Implement Wagner and Fisher Algorithm for online String Matching
Set Interface trong Java
Java 8 Stream findFirst() vs. findAny()
Performance Difference Between save() and saveAll() in Spring Data
Request Method Not Supported (405) in Spring
Java Program to Delete a Particular Node in a Tree Without Using Recursion
New Features in Java 13
Merging Streams in Java
Hướng dẫn Java Design Pattern – MVC
Java Program to Implement Quick sort
Java Program to Implement Graham Scan Algorithm to Find the Convex Hull
Hướng dẫn Java Design Pattern – Null Object
Hướng dẫn sử dụng Java Reflection
Java Program to Generate Random Numbers Using Middle Square Method
Check if there is mail waiting
Tiêu chuẩn coding trong Java (Coding Standards)
Java Program to Encode a Message Using Playfair Cipher
Introduction to Using Thymeleaf in Spring
Java Program to Check whether Undirected Graph is Connected using BFS