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:
Guide to the Synchronized Keyword in Java
Send email with JavaMail
Copy a List to Another List in Java
Java 9 Stream API Improvements
Spring Security OAuth2 – Simple Token Revocation
Introduction to Apache Commons Text
Java Program to Implement Bloom Filter
Hướng dẫn Java Design Pattern – Memento
Using Optional with Jackson
Java Program to Perform Searching in a 2-Dimension K-D Tree
Sử dụng CountDownLatch trong Java
Java Program to Implement Knapsack Algorithm
An Intro to Spring Cloud Vault
Loại bỏ các phần tử trùng trong một ArrayList như thế nào trong Java 8?
Java Program to Implement Unrolled Linked List
Graph Data Stucture
Java – Delete a File
How to Replace Many if Statements in Java
Lớp Collections trong Java (Collections Utility Class)
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
Guide to Mustache with Spring Boot
Java – Random Long, Float, Integer and Double
Java Program to Generate N Number of Passwords of Length M Each
Logout in an OAuth Secured Application
Set Interface trong Java
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
Spring’s RequestBody and ResponseBody Annotations
Spring Security Registration – Resend Verification Email
@DynamicUpdate with Spring Data JPA
Java Program to Implement Sparse Array
Checking for Empty or Blank Strings in Java
Java Program to Implement PriorityQueue API