This Java program, to perform the bfs traversal of a given undirected 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 undirected 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 UndirectedConnectivityBFS
{
private Queue<Integer> queue;
public UndirectedConnectivityBFS()
{
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();
for (int i = 1; i <= number_of_nodes; i++)
{
for (int j = 1; j <= number_of_nodes; j++)
{
if (adjacency_matrix[i][j] == 1 && adjacency_matrix[j][i] == 0)
{
adjacency_matrix[j][i] = 1;
}
}
}
System.out.println("Enter the source for the graph");
source = scanner.nextInt();
UndirectedConnectivityBFS undirectedConnectivity= new UndirectedConnectivityBFS();
undirectedConnectivity.bfs(adjacency_matrix, source);
} catch (InputMismatchException inputMismatch)
{
System.out.println("Wrong Input Format");
}
scanner.close();
}
}
$javac UndirectedConnectivityBFS.java $java UndirectedConnectivityBFS 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:
Convert String to Byte Array and Reverse in Java
Spring Cloud AWS – Messaging Support
Custom Error Pages with Spring MVC
A Guide to WatchService in Java NIO2
Shuffling Collections In Java
Spring MVC Custom Validation
Request Method Not Supported (405) in Spring
Phương thức tham chiếu trong Java 8 – Method References
New in Spring Security OAuth2 – Verify Claims
Tìm hiểu về xác thực và phân quyền trong ứng dụng
Display Auto-Configuration Report in Spring Boot
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
OAuth2 for a Spring REST API – Handle the Refresh Token in AngularJS
Java Program to Describe the Representation of Graph using Incidence List
Java Program to implement Bit Matrix
Sử dụng CyclicBarrier trong Java
Java Program to Implement Hash Tables Chaining with Doubly Linked Lists
Tránh lỗi NullPointerException trong Java như thế nào?
Apache Camel with Spring Boot
Java TreeMap vs HashMap
Java 8 Collectors toMap
Spring Boot Actuator
Spring Boot - Build Systems
Java Program to Perform LU Decomposition of any Matrix
Java Program to Find Number of Articulation points in a Graph
Java Program to Find SSSP (Single Source Shortest Path) in DAG (Directed Acyclic Graphs)
How to Add a Single Element to a Stream
Introduction to PCollections
Java Program to Represent Graph Using Incidence Matrix
Java Program to Implement Hopcroft Algorithm
Spring Boot - Tomcat Port Number
Lớp TreeMap trong Java