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:
The Registration Process With Spring Security
Java Program to Perform Cryptography Using Transposition Technique
Collect a Java Stream to an Immutable Collection
Model, ModelMap, and ModelAndView in Spring MVC
Recommended Package Structure of a Spring Boot Project
How to Get the Last Element of a Stream in Java?
Java – Reader to InputStream
Spring NoSuchBeanDefinitionException
Tìm hiểu về Web Service
Java Program to Implement Trie
Java Program to Solve Travelling Salesman Problem for Unweighted Graph
Spring Boot - Eureka Server
Java Program to Search for an Element in a Binary Search Tree
Overview of the java.util.concurrent
Introduction to Using Thymeleaf in Spring
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Configure a Spring Boot Web Application
Rest Web service: Filter và Interceptor với Jersey 2.x (P2)
Adding a Newline Character to a String in Java
Hướng dẫn sử dụng Lớp FilePermission trong java
Java 8 Stream API Analogies in Kotlin
Spring Boot - Admin Client
Java String Conversions
Java Program to Perform Finite State Automaton based Search
Java Program to Implement Meldable Heap
Handling URL Encoded Form Data in Spring REST
Refactoring Design Pattern với tính năng mới trong Java 8
Java Program to Implement Stack API
Custom Cascading in Spring Data MongoDB
An Intro to Spring Cloud Zookeeper
Encode a String to UTF-8 in Java
Search for connected components in a graph