본문 바로가기
알고리즘 문제 풀이

[백준] DFS와 DFS

by pinok1o 2021. 4. 22.

https://www.acmicpc.net/problem/15650

문제 해석

  • DFS BFS 를 활용하여 탐색한 결과를 출력하는 프로그램을 작성하시오.

문제 풀이

DFS, BFS 구현!

import java.util.*;

public class Main {

    static int Map[][];
    static boolean[] Visited;
    static int N,M,V;

    public static void dfs(int i){
        Visited[i] = true;
        System.out.print(i+" ");
        for(int j = 1; j < N+1; j++){
            if(Map[i][j] == 1 && Visited[j] == false){
                dfs(j);
            }
        }
    }

    public static void bfs(int i){
        Queue<Integer> q = new LinkedList<Integer>();
        q.offer(i);
        Visited[i] = true;

        while(!q.isEmpty()){
            int temp = q.poll();
            System.out.print(temp+" ");

            for(int k = 1; k <= N; k++){
                if(Map[temp][k] == 1 && Visited[k] == false){
                    q.offer(k);
                    Visited[k] = true;
                }
            }
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        N = sc.nextInt();
        M = sc.nextInt();
        V = sc.nextInt();

        Map =new int[N+1][N+1];
        Visited= new boolean[N+1];

        for (int[] row: Map) {
            Arrays.fill(row, 0);
        }
        Arrays.fill(Visited, false);

        for(int i = 0; i < M; i++){
            int a = sc.nextInt();
            int b = sc.nextInt();
            Map[a][b]=1;
            Map[b][a]=1;
        }

        dfs(V);
        System.out.println();
        Arrays.fill(Visited, false);
        bfs(V);

    }
}

'알고리즘 문제 풀이' 카테고리의 다른 글

[백준] 유기농 배추  (0) 2021.04.22
[백준] N과 M(2)  (0) 2021.04.22
[백준] N과 M  (0) 2021.04.16
[백준] 모든 순열  (0) 2021.04.16
[프로그래머스] 2 x n 타일  (0) 2021.04.15

댓글