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:
Spring Boot - File Handling
Object cloning trong java
List Interface trong Java
Java Program to Implement LinkedList API
Java TreeMap vs HashMap
A Guide to Java HashMap
Lớp LinkedHashMap trong Java
Handling Errors in Spring WebFlux
Remove All Occurrences of a Specific Value from a List
Jackson Date
Java Program to Check whether Graph is a Bipartite using BFS
How to Iterate Over a Stream With Indices
Spring MVC + Thymeleaf 3.0: New Features
Java Program to Generate All Possible Subsets with Exactly k Elements in Each Subset
Java Program to Implement Circular Doubly Linked List
Java Program to Implement Lloyd’s Algorithm
Java Program to Perform Optimal Paranthesization Using Dynamic Programming
Query Entities by Dates and Times with Spring Data JPA
Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree
The Spring @Controller and @RestController Annotations
Hashtable trong java
Getting a File’s Mime Type in Java
Java Program to Implement Hash Tables Chaining with Binary Trees
Java Program to Implement Selection Sort
Java Program to Implement Fenwick Tree
Template Engines for Spring
Java Program to Solve TSP Using Minimum Spanning Trees
Java Program to Implement Sorted Circularly Singly Linked List
Ignore Null Fields with Jackson
How to Use if/else Logic in Java 8 Streams
Spring Boot - Enabling HTTPS
Runnable vs. Callable in Java