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:
Working With Maps Using Streams
Java Program to Implement Sorted Circularly Singly Linked List
Java Program to Implement Singly Linked List
Hướng dẫn Java Design Pattern – State
Spring Boot - Unit Test Cases
Java Program to Implement Sieve Of Atkin
Handle EML file with JavaMail
How to Round a Number to N Decimal Places in Java
Serialization và Deserialization trong java
Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
Spring Boot - Thymeleaf
Java Program to Implement Gauss Seidel Method
Merging Two Maps with Java 8
Simple Single Sign-On with Spring Security OAuth2
Toán tử trong java
Circular Dependencies in Spring
Guide to WeakHashMap in Java
How to Kill a Java Thread
Sao chép các phần tử của một mảng sang mảng khác như thế nào?
Tạo số và chuỗi ngẫu nhiên trong Java
Java Program to Implement Hash Tables
Custom Cascading in Spring Data MongoDB
Java Program to Implement Horner Algorithm
The Spring @Controller and @RestController Annotations
Java Program to Implement the linear congruential generator for Pseudo Random Number Generation
Java Program to Implement LinkedHashMap API
Java Program to Implement Interpolation Search Algorithm
Java Program to Construct K-D Tree for 2 Dimensional Data
Get the workstation name or IP
Java Program to Sort an Array of 10 Elements Using Heap Sort Algorithm
Hướng dẫn Java Design Pattern – Strategy
Java – Get Random Item/Element From a List