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:
Java Program to Find kth Smallest Element by the Method of Partitioning the Array
Java Program to Implement the Checksum Method for Small String Messages and Detect
Java Program to Implement Hash Tables Chaining with Binary Trees
Java Program to Implement Hash Tables Chaining with List Heads
Java Deep Learning Essentials - Yusuke Sugomori
Java Program to Implement Heap’s Algorithm for Permutation of N Numbers
Các nguyên lý thiết kế hướng đối tượng – SOLID
Tạo chương trình Java đầu tiên sử dụng Eclipse
Hướng dẫn Java Design Pattern – Template Method
Java Program to Implement Double Order Traversal of a Binary Tree
Hướng dẫn Java Design Pattern – Object Pool
Pagination and Sorting using Spring Data JPA
The DAO with Spring and Hibernate
Java Program to Perform Right Rotation on a Binary Search Tree
Sử dụng CyclicBarrier trong Java
Java Convenience Factory Methods for Collections
Constructor Dependency Injection in Spring
Chuyển đổi Array sang ArrayList và ngược lại
Introduction to Spring Method Security
Implementing a Binary Tree in Java
Guide to Guava Table
Arrays.asList vs new ArrayList(Arrays.asList())
Automatic Property Expansion with Spring Boot
Java Program to Implement RoleList API
Hướng dẫn Java Design Pattern – Mediator
Clique in the Divisibility Graph
Merging Two Maps with Java 8
Guide to System.gc()
Introduction to Spring Boot CLI
Checking for Empty or Blank Strings in Java
Jackson JSON Views
Java Program to Perform integer Partition for a Specific Case