This Java program,to perform the topological Sort on a given graph by the DFS method.The topological sort is performed on a directed acyclic graph.
Here is the source code of the Java program to check for cycle in topological sort. 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 TopoCycle
{
private Stack<Integer> stack;
public TopoCycle()
{
stack = new Stack<Integer>();
}
public boolean checkCycle(int adjacency_matrix[][], int source)
{
int number_of_nodes = adjacency_matrix.length - 1;
int[] topological_sort = new int [number_of_nodes + 1];
int pos = 1;
int j;
boolean cycle = false;
int visited[] = new int[number_of_nodes + 1];
int element = source;
int i = source;
visited = 1;
stack.push(source);
while (!stack.isEmpty())
{
element = stack.peek();
while (i <= number_of_nodes)
{
if (adjacency_matrix[element][i] == 1 && visited[i] == 1)
{
if (stack.contains(i))
{
System.out.println("The Graph Contains a cycle");
cycle = true;
return cycle;
}
}
if (adjacency_matrix[element][i] == 1 && visited[i] == 0)
{
stack.push(i);
visited[i] = 1;
element = i;
i = 1;
continue;
}
i++;
}
j = stack.pop();
topological_sort[pos++] = j;
i = ++j;
}
System.out.println("The Graph does not Contain cycle");
return cycle;
}
public static void main(String...arg)
{
int number_no_nodes, source;
Scanner scanner = null;
try
{
System.out.println("Enter the number of nodes in the graph");
scanner = new Scanner(System.in);
number_no_nodes = scanner.nextInt();
int adjacency_matrix[][] = new int[number_no_nodes + 1][number_no_nodes + 1];
System.out.println("Enter the adjacency matrix");
for (int i = 1; i <= number_no_nodes; i++)
for (int j = 1; j <= number_no_nodes; j++)
adjacency_matrix[i][j] = scanner.nextInt();
System.out.println("Enter the source for the graph");
source = scanner.nextInt();
TopoCycle topoCycle = new TopoCycle();
topoCycle.checkCycle(adjacency_matrix, source);
}catch(InputMismatchException inputMismatch)
{
System.out.println("Wrong Input format");
}
scanner.close();
}
}
$javac TopoCycle.java $java TopoCycle Enter the number of nodes in the graph 5 Enter the adjacency matrix 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 Enter the source for the graph 1 The Graph contains a cycle
Related posts:
Java Program to Compute Determinant of a Matrix
Java Program to Implement Graph Structured Stack
Converting Java Date to OffsetDateTime
Spring Webflux and CORS
Guide to the Java Queue Interface
How to Replace Many if Statements in Java
Java Program to Implement Attribute API
Spring Boot - Tomcat Deployment
Spring WebClient Filters
Spring Boot - Database Handling
OAuth2 for a Spring REST API – Handle the Refresh Token in Angular
Java Program to Implement Adjacency List
Spring Boot: Customize Whitelabel Error Page
Quick Guide to java.lang.System
Integer Constant Pool trong Java
So sánh ArrayList và LinkedList trong Java
Spring MVC Content Negotiation
Java Program to Implement Affine Cipher
Java Program to Generate N Number of Passwords of Length M Each
Sorting Query Results with Spring Data
Java Program to Implement Fisher-Yates Algorithm for Array Shuffling
Configure a RestTemplate with RestTemplateBuilder
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
Java Program to Implement Maximum Length Chain of Pairs
Spring Data – CrudRepository save() Method
Guide to ThreadLocalRandom in Java
New Features in Java 12
Spring Boot Actuator
Examine the internal DNS cache
List Interface trong Java
Zipping Collections in Java
Immutable ArrayList in Java