Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.InputMismatchException;
- import java.util.Scanner;
- import java.util.Stack;
- public class DFS
- {
- private Stack<Integer> stack;
- public DFS()
- {
- stack = new Stack<Integer>();
- }
- public void dfs(int adjacency_matrix[][], int source)
- {
- int number_of_nodes = adjacency_matrix[source].length - 1;
- int visited[] = new int[number_of_nodes + 1];
- int element = source;
- int i = source;
- System.out.print(element + "\t");
- visited[source] = 1;
- stack.push(source);
- while (!stack.isEmpty())
- {
- element = stack.peek();
- i = element;
- while (i <= number_of_nodes)
- {
- if (adjacency_matrix[element][i] == 1 && visited[i] == 0)
- {
- stack.push(i);
- visited[i] = 1;
- element = i;
- i = 1;
- System.out.print(element + "\t");
- continue;
- }
- i++;
- }
- 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();
- System.out.println("The DFS Traversal for the graph is given by ");
- DFS dfs = new DFS();
- dfs.dfs(adjacency_matrix, source);
- }catch(InputMismatchException inputMismatch)
- {
- System.out.println("Wrong Input format");
- }
- scanner.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement