alr
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
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();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user