This Java program,performs the DFS traversal on the given graph represented by a adjacency matrix to check for cycles in the graph.the DFS traversal makes use of an stack.
Here is the source code of the Java program to check for cycle in graph.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.Scanner;
import java.util.Stack;
public class CheckCycle
{
private Stack<Integer> stack;
private int adjacencyMatrix[][];
public CheckCycle()
{
stack = new Stack<Integer>();
}
public void dfs(int adjacency_matrix[][], int source)
{
int number_of_nodes = adjacency_matrix.length - 1;
adjacencyMatrix = new int[number_of_nodes + 1][number_of_nodes + 1];
for (int sourcevertex = 1; sourcevertex <= number_of_nodes; sourcevertex++)
{
for (int destinationvertex = 1; destinationvertex <= number_of_nodes; destinationvertex++)
{
adjacencyMatrix[sourcevertex][destinationvertex] =
adjacency_matrix[sourcevertex][destinationvertex];
}
}
int visited[] = new int[number_of_nodes + 1];
int element = source;
int destination = source;
visited = 1;
stack.push(source);
while (!stack.isEmpty())
{
element = stack.peek();
destination = element;
while (destination <= number_of_nodes)
{
if (adjacencyMatrix[element][destination] == 1 && visited[destination] == 1)
{
if (stack.contains(destination))
{
System.out.println("The Graph contains cycle");
return;
}
}
if (adjacencyMatrix[element][destination] == 1 && visited[destination] == 0)
{
stack.push(destination);
visited[destination] = 1;
adjacencyMatrix[element][destination] = 0;
element = destination;
destination = 1;
continue;
}
destination++;
}
stack.pop();
}
}
public static void main(String...arg)
{
int number_of_nodes, source;
Scanner scanner = null;
try
{
System.out.println("Enter the number of nodes in the graph");
scanner = new Scanner(System.in);
number_of_nodes = scanner.nextInt();
int adjacency_matrix[][] = new int[number_of_nodes + 1][number_of_nodes + 1];
System.out.println("Enter the adjacency matrix");
for (int i = 1; i <= number_of_nodes; i++)
for (int j = 1; j <= number_of_nodes; j++)
adjacency_matrix[i][j] = scanner.nextInt();
System.out.println("Enter the source for the graph");
source = scanner.nextInt();
CheckCycle checkCycle = new CheckCycle();
checkCycle.dfs(adjacency_matrix, source);
}catch(InputMismatchException inputMismatch)
{
System.out.println("Wrong Input format");
}
scanner.close();
}
}
$javac CheckCycle.java $java CheckCycle Enter the number of nodes in the graph 5 Enter the adjacency matrix 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 Enter the source for the graph 1 The Graph contains a cycle
Related posts:
ThreadPoolTaskExecutor corePoolSize vs. maxPoolSize
Cài đặt và sử dụng Swagger UI
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Java Program to Generate All Subsets of a Given Set in the Gray Code Order
Java Program for Topological Sorting in Graphs
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
Java Program to Construct an Expression Tree for an Infix Expression
Java Program to Implement RenderingHints API
Java – Get Random Item/Element From a List
Introduction to Spring Cloud OpenFeign
Dockerizing a Spring Boot Application
Basic Authentication with the RestTemplate
Guava CharMatcher
Quick Guide to Spring Bean Scopes
Primitive Type Streams in Java 8
Java Program to Implement Repeated Squaring Algorithm
Java Program to Implement Bit Array
Java Program to find the number of occurrences of a given number using Binary Search approach
Java Program to Check if a Given Binary Tree is an AVL Tree or Not
JUnit 5 for Kotlin Developers
Get the workstation name or IP
HttpClient 4 – Send Custom Cookie
HttpAsyncClient Tutorial
Java Program to Implement IdentityHashMap API
Java Program to Find Number of Articulation points in a Graph
Java Program to Implement Quick Sort Using Randomization
Hướng dẫn Java Design Pattern – Proxy
Implementing a Binary Tree in Java
Java Program to Find SSSP (Single Source Shortest Path) in DAG (Directed Acyclic Graphs)
Xử lý ngoại lệ trong Java (Exception Handling)
Spring Boot - Runners
Examine the internal DNS cache