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 – Reader to InputStream
Introduction to Spring Security Expressions
Testing in Spring Boot
Giới thiệu Google Guice – Aspect Oriented Programming (AOP)
Java Program to Implement Sorted Doubly Linked List
Java Program to Implement ArrayDeque API
Java Program to Emulate N Dice Roller
Rest Web service: Filter và Interceptor với Jersey 2.x (P1)
Spring Boot: Customize Whitelabel Error Page
Java Program to Implement Sorted Circularly Singly Linked List
Extract network card address
Java Convenience Factory Methods for Collections
Java Program to Find Hamiltonian Cycle in an UnWeighted Graph
Java Program to Implement Hamiltonian Cycle Algorithm
How To Serialize and Deserialize Enums with Jackson
Using the Not Operator in If Conditions in Java
Apache Commons Collections BidiMap
Java Program to Perform Partial Key Search in a K-D Tree
Difference Between Wait and Sleep in Java
Introduction to Eclipse Collections
Control Structures in Java
Hướng dẫn Java Design Pattern – Proxy
Java Program to Implement Singly Linked List
Java Program to Implement CountMinSketch
Spring Boot - Hystrix
Java Program to Represent Graph Using Incidence List
Java Program to Implement Quick Sort Using Randomization
Java – String to Reader
Java Program to Implement D-ary-Heap
Java Program to Implement Sorted Circular Doubly Linked List
Get the workstation name or IP
Java Copy Constructor