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 Compute Discrete Fourier Transform Using Naive Approach
Giới thiệu HATEOAS
Kết hợp Java Reflection và Java Annotations
Array to String Conversions
Object cloning trong java
Java Program to Solve any Linear Equation in One Variable
Using a List of Values in a JdbcTemplate IN Clause
Java Program to Convert a Decimal Number to Binary Number using Stacks
Làm thế nào tạo instance của một class mà không gọi từ khóa new?
JUnit5 @RunWith
Java Program to Implement Rolling Hash
Java Program to Implement WeakHashMap API
Circular Dependencies in Spring
The Spring @Controller and @RestController Annotations
Java Program to Implement Interval Tree
String Processing with Apache Commons Lang 3
ETL with Spring Cloud Data Flow
Check If Two Lists are Equal in Java
Generic Constructors in Java
Java Program to Check Cycle in a Graph using Graph traversal
Supplier trong Java 8
Converting Between an Array and a Set in Java
Java Program to Solve a Matching Problem for a Given Specific Case
REST Pagination in Spring
Giới thiệu Java Service Provider Interface (SPI) – Tạo các ứng dụng Java dễ mở rộng
An Introduction to Java.util.Hashtable Class
Spring Boot - Eureka Server
Jackson Ignore Properties on Marshalling
How to Use if/else Logic in Java 8 Streams
Spring Security 5 for Reactive Applications
Jackson vs Gson
Convert char to String in Java