Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- import java.util.Stack;
- class Node {
- int data;
- boolean visited;
- List<Node> neighbours;
- Node(int data) {
- this.data = data;
- this.neighbours = new ArrayList<>();
- }
- public void addneighbours(Node neighbourNode) {
- this.neighbours.add(neighbourNode);
- }
- public List<Node> getNeighbours() {
- return neighbours;
- }
- public void setNeighbours(List<Node> neighbours) {
- this.neighbours = neighbours;
- }
- }
- class DepthFirstSearch {
- public void dfs(Node node) {
- //Lengkapi
- System.out.print(node.data + " ");
- List <Node> neighbours = node.getNeighbours();
- node.visited = true;
- int i = 0;
- while (i < neighbours.size()){
- Node n = neighbours.get(i);
- if(!n.visited && n!=null){
- dfs(n);
- }
- i++;
- }
- }
- public void dfs(Node[] nodes, int mulai){
- for (int i = 0; i < nodes.length; i++) {
- if (nodes[i].data == mulai) {
- dfs(nodes[i]);
- break;
- }
- }
- System.out.println("");
- }
- }
- public class DFSMain {
- public static void main(String arg[]) {
- Scanner in = new Scanner(System.in);
- DepthFirstSearch DFS = new DepthFirstSearch();
- String input[] = in.nextLine().split(" ");
- Node[] nodes = new Node[input.length];
- for (int i = 0; i < input.length; i++) {
- nodes[i] = new Node(Integer.parseInt(input[i]));
- }
- int n = in.nextInt();
- for (int i = 0; i < n; i++) {
- int A = in.nextInt();
- int B = in.nextInt();
- nodes = addneighbour(nodes, A, B);
- }
- int mulai = in.nextInt();
- DFS.dfs(nodes, mulai);
- }
- public static Node[] addneighbour(Node[] nodes, int A, int B){
- for (int i = 0; i < nodes.length; i++) {
- if (nodes[i].data==A) {
- for (int j = 0; j < nodes.length; j++) {
- if (nodes[j].data==B) {
- nodes[i].addneighbours(nodes[j]);
- }
- }
- }
- }
- return nodes;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement