Algorithm

[BOJ 1260] DFS와 BFS ( with Java )

quedevel 2023. 4. 16. 14:08
728x90
반응형

문제

 

1260번: DFS와 BFS

첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사

www.acmicpc.net

제출한 답안

package BOJ;


import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class BOJ_1260 {

    // 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000)
    private static int[][] graph = new int[1001][1001];

    // 방문 여부 검사
    private static boolean[] isVisited = new boolean[1001];

    private static int N;

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

        N = sc.nextInt();
        int M = sc.nextInt();
        int start = sc.nextInt();

        for (int i = 0; i < M; i++) {
            int x = sc.nextInt();
            int y = sc.nextInt();
            graph[x][y] = graph[y][x] = 1; // 간선(Edge)
        }

        dfs(start);
        System.out.println();

        isVisited = new boolean[1001];

        bfs(start);
    }

    private static void dfs(int vertex){
        isVisited[vertex] = true;
        System.out.print(vertex + " ");

        for (int i = 1; i <= N; i++) {
            // 방문 여부와 간선으로 연결되었는지 확인
            if (graph[vertex][i] == 1 && !isVisited[i]){
                dfs(i);
            }
        }
    }

    private static void bfs(int vertex){
        Queue<Integer> queue = new LinkedList<>();
        queue.offer(vertex);
        isVisited[vertex] = true;

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

            for (int i = 1; i <= N; i++) {
                // 방문 여부와 간선으로 연결 여부 확인
                if (graph[poll][i] == 1 && !isVisited[i]){
                    queue.offer(i);
                    isVisited[i] = true;
                }
            }
        }
    }
}
728x90
반응형

'Algorithm' 카테고리의 다른 글

[BOJ 2667] 단지번호붙이기 ( with Java )  (0) 2023.04.16
[BOJ 2606] 바이러스 ( with Java )  (0) 2023.04.16
LCA(Lowest Common Ancestor)  (1) 2023.04.15
DFS & BFS  (0) 2023.04.14
LIS (Longest Increasing Sequence)  (0) 2023.04.14