54 lines
1.3 KiB
Java
54 lines
1.3 KiB
Java
import java.util.*;
|
|
|
|
public class topologicalSort{
|
|
static int N;
|
|
static int[][] graph;
|
|
static boolean[] visited;
|
|
static Stack<Integer> stack = new Stack<>();
|
|
|
|
static void dfs(int v){
|
|
visited[v] = true;
|
|
for(int i =0;i<N;i++){
|
|
if(!visited[i] && graph[v][i]==1){
|
|
dfs(i);
|
|
}
|
|
}
|
|
stack.push(v);
|
|
}
|
|
|
|
static void topoSort(){
|
|
for(int i=0;i<N;i++){
|
|
if(!visited[i]){
|
|
dfs(i);
|
|
}
|
|
}
|
|
|
|
System.out.println("\nValid execution order");
|
|
while(!stack.isEmpty()){
|
|
System.out.print((char)('A'+ stack.pop())+"->");
|
|
}
|
|
}
|
|
public static void main(String[] args){
|
|
Scanner sc = new Scanner(System.in);
|
|
System.out.print("\nEnter number of tasks: ");
|
|
N = sc.nextInt();
|
|
graph = new int[N][N];
|
|
visited = new boolean[N];
|
|
|
|
System.out.print("ENter number of dependencies: ");
|
|
int edges = sc.nextInt();
|
|
|
|
System.out.println("Enter dependencies (u v means u -> v):");
|
|
for(int i = 0;i<edges;i++){
|
|
char u = sc.next().charAt(0);
|
|
char v = sc.next().charAt(0);
|
|
|
|
graph[u-'A'][v-'A'] = 1;
|
|
}
|
|
topoSort();
|
|
sc.close();
|
|
|
|
}
|
|
|
|
}
|