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:
Introduction to Spring Cloud CLI
Spring Boot - Enabling Swagger2
Converting Iterator to List
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Java – File to Reader
Java Program to Implement Dijkstra’s Algorithm using Set
Java Program to Find Minimum Element in an Array using Linear Search
Set Interface trong Java
Check if a String is a Palindrome in Java
Java Program to Perform LU Decomposition of any Matrix
Comparing Arrays in Java
Java Program to Find Path Between Two Nodes in a Graph
Tránh lỗi ConcurrentModificationException trong Java như thế nào?
Search for connected components in a graph
Recommended Package Structure of a Spring Boot Project
Simple Single Sign-On with Spring Security OAuth2
Java – Get Random Item/Element From a List
Introduction to Spring Method Security
Jackson – Marshall String to JsonNode
A Guide to Java 9 Modularity
Java Program to Implement Self organizing List
Spring Cloud AWS – EC2
A Quick Guide to Spring MVC Matrix Variables
Guide to the Fork/Join Framework in Java
Spring Boot: Customize the Jackson ObjectMapper
Java Program to Check Cycle in a Graph using Topological Sort
Lập trình đa luồng với Callable và Future trong Java
Java Program to Check Multiplicability of Two Matrices
Java Program to Solve Set Cover Problem assuming at max 2 Elements in a Subset
Java Program to implement Priority Queue
Java Timer
Java Program to Implement Gabow Algorithm