팡세영
Log sey
팡세영
전체 방문자
오늘
어제
  • 분류 전체보기 (74)
    • PS (45)
      • programmers (13)
      • 백준 (29)
    • Android (16)
    • Daily (0)
    • Kotlin (6)
    • Design Pattern (2)
    • Java (1)
    • Flutter (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • LEVEL2
  • DFS
  • 골드
  • 실버
  • binding
  • TestCode
  • java
  • 자바
  • 안드로이드
  • 백준
  • 해쉬맵
  • flutter
  • compose
  • mvvm
  • programmers #프로그래머스
  • 이분탐색
  • Android
  • 완전탐색
  • ArcitecturePattern
  • 코틀린
  • 하단네비게이션바
  • 구현
  • 프로그래머스
  • 의존성 주입
  • BFS
  • programmers
  • 문자열
  • Kotlin
  • 정렬
  • CustomView

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
팡세영

Log sey

알고리즘 수업 - 깊이 우선 탐색
PS/백준

알고리즘 수업 - 깊이 우선 탐색

2022. 8. 19. 18:08

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

 

24479번: 알고리즘 수업 - 깊이 우선 탐색 1

첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양

www.acmicpc.net


예제 케이스는 통과하는데 제출하면 틀리시는 분들을 위해 반례 드립니다.

 

1% ~ 3%                   70%

[입력]                         [입력]  

6 4 1                        5 1 3

2 3                           1 2

1 4

1 5

4 6

 

정답                             정답

1                                 0
0                                0
0                                1
2                                0
4                                0
3

 


 

 

[java]

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;

public class Main {
    static ArrayList<ArrayList<Integer>> graph = new ArrayList<>();
    static boolean visited[];
    static int depth[];
    static int cnt = 1;

    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int m = Integer.parseInt(st.nextToken());
        int n = Integer.parseInt(st.nextToken());
        int start = Integer.parseInt(st.nextToken());

        init(m,n,br,st);

        for(int i=0; i<graph.size(); i++)
            Collections.sort(graph.get(i));

        dfs(start);

        for(int i=1; i<=m; i++)
            System.out.println(depth[i]);


    }

    public static void dfs(int start){

        if(!visited[start]){
            visited[start] = true;
            depth[start] = cnt++;
            for(var num : graph.get(start)){
                if(!visited[num]){
                    dfs(num);
                }
            }
        }
    }

    public static void init(int m, int n, BufferedReader br, StringTokenizer st) throws IOException {
        visited = new boolean[m+1];
        depth = new int[m+1];
        for(int i=0; i<=m; i++) graph.add(new ArrayList<>());

        for(int i=0; i<n; i++){
            st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());

            graph.get(a).add(b);
            graph.get(b).add(a);
        }
    }

}

'PS > 백준' 카테고리의 다른 글

백준 1753 - 최단 경로 (다익스트라)  (0) 2022.09.20
백준 안전영역 2468 - java  (0) 2022.08.26
백준 - 점프왕 쩰리 (Small) - Java  (0) 2022.08.19
백준 알고리즘 수업 - 너비 우선 탐색 4 (24447) - Java  (0) 2022.08.01
백준 - 알고리즘 수업 (24444) - Java  (0) 2022.07.31
    'PS/백준' 카테고리의 다른 글
    • 백준 1753 - 최단 경로 (다익스트라)
    • 백준 안전영역 2468 - java
    • 백준 - 점프왕 쩰리 (Small) - Java
    • 백준 알고리즘 수업 - 너비 우선 탐색 4 (24447) - Java
    팡세영
    팡세영
    Android, CS, PS

    티스토리툴바