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:
Tiêu chuẩn coding trong Java (Coding Standards)
Lập trình hướng đối tượng (OOPs) trong java
Sử dụng CyclicBarrier trong Java
Guide to UUID in Java
Apache Camel with Spring Boot
Jackson – JsonMappingException (No serializer found for class)
Base64 encoding và decoding trong Java 8
Java Program to Implement Nth Root Algorithm
Java Program to Check whether Graph is a Bipartite using BFS
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
Programmatic Transaction Management in Spring
The Spring @Controller and @RestController Annotations
Java Program to Find the Median of two Sorted Arrays using Binary Search Approach
Spring Boot - Service Components
Using Java Assertions
Spring Boot - Unit Test Cases
Java Program to Print the Kind of Rotation the AVL Tree is Undergoing
Spring Boot Security Auto-Configuration
So sánh ArrayList và Vector trong Java
Hướng dẫn Java Design Pattern – Dependency Injection
Spring MVC Async vs Spring WebFlux
Java Program to Implement Merge Sort Algorithm on Linked List
Number Formatting in Java
Spring MVC Setup with Kotlin
Hamcrest Collections Cookbook
Java Program to Check whether Directed Graph is Connected using BFS
Spring Boot - Cloud Configuration Server
Java Program to implement Bi Directional Map
Java Multi-line String
Java Program to Implement Unrolled Linked List
Java Program to Find the Vertex Connectivity of a Graph
REST Web service: HTTP Status Code và xử lý ngoại lệ RESTful web service với Jersey 2.x