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:
Spring MVC Setup with Kotlin
Java Program to Check whether Graph is a Bipartite using 2 Color Algorithm
Java Program to Implement Dijkstra’s Algorithm using Queue
JUnit5 Programmatic Extension Registration with @RegisterExtension
New Features in Java 12
Java Program to Generate a Sequence of N Characters for a Given Specific Case
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Java Program to Find the Median of two Sorted Arrays using Binary Search Approach
Java Program to Generate a Random Subset by Coin Flipping
TreeSet và sử dụng Comparable, Comparator trong java
Java Program to Find Transitive Closure of a Graph
Java – Rename or Move a File
Partition a List in Java
Từ khóa static và final trong java
Guide To CompletableFuture
Java Program to Implement Attribute API
Java Program to Describe the Representation of Graph using Incidence List
Hướng dẫn sử dụng lớp Console trong java
RestTemplate Post Request with JSON
Java Program to Implement Find all Forward Edges in a Graph
Java Concurrency Interview Questions and Answers
Java Perform to a 2D FFT Inplace Given a Complex 2D Array
Multipart Upload with HttpClient 4
Spring REST API + OAuth2 + Angular
New Features in Java 8
Uploading MultipartFile with Spring RestTemplate
Guava CharMatcher
Java – String to Reader
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
ClassNotFoundException vs NoClassDefFoundError
Disable DNS caching
Java Program to Implement Disjoint Sets