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:
Lớp Collectors trong Java 8
JWT – Token-based Authentication trong Jersey 2.x
Java Program to Check if it is a Sparse Matrix
Notify User of Login From New Device or Location
Java Timer
HttpClient 4 – Follow Redirects for POST
Immutable Objects in Java
Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure)
Java Program to Implement LinkedBlockingQueue API
Create a Custom Auto-Configuration with Spring Boot
Spring Boot - Code Structure
Java Program to implement Sparse Vector
HttpClient Basic Authentication
Bootstrapping Hibernate 5 with Spring
Giới thiệu Json Web Token (JWT)
Java Program to Find the Mode in a Data Set
How to Read a File in Java
Hướng dẫn Java Design Pattern – Factory Method
Spring Boot Actuator
Java Program to Implement Dijkstra’s Algorithm using Set
Java Program to implement Bi Directional Map
Java Program to Implement Euclid GCD Algorithm
Java Program to Implement Ternary Search Algorithm
A Guide to @RepeatedTest in Junit 5
Java Program to Implement Doubly Linked List
Spring AMQP in Reactive Applications
Java Program to Print the Kind of Rotation the AVL Tree is Undergoing
Remove the First Element from a List
Java Program to Implement Gale Shapley Algorithm
Command-Line Arguments in Java
Comparing Dates in Java
Spring Boot - Twilio