[백준] 24445 - 너비 우선 탐색 2

오규성·2025년 10월 20일

BFS 를 통해 푸는 문제.
24444 와 문제 풀이 과정은 동일하지만 오름차순이 아닌, 내림차순으로 정렬해야한다는 것만 다르다.

풀이

fun `24445 - 너비 우선 탐색2`(){
    val br = System.`in`.bufferedReader()
    val bw = System.out.bufferedWriter()
    val strBuilder = StringBuilder()
    val (n, m, r) = br.readLine().split(" ").map{ it.toInt() }
    val visitedArr = IntArray(n + 1)
    val undirectList = Array(n + 1){ mutableListOf<Int>() }
    val queue = ArrayDeque<Int>()
    var visitCount = 0

    repeat(m){
        val token = java.util.StringTokenizer(br.readLine())
        val from = token.nextToken().toInt()
        val to = token.nextToken().toInt()

        undirectList[from].add(to)
        undirectList[to].add(from)
    }

    undirectList.forEach { it.sortByDescending { it } }

    queue.add(r)
    visitedArr[r] = ++visitCount

    while (queue.isNotEmpty()){
        val from = queue.removeFirst()

        for(to in undirectList[from]){
            if(visitedArr[to] == 0){
                visitedArr[to] = ++visitCount
                queue.add(to)
            }
        }
    }

    for(i in 1 .. n){
        strBuilder.appendLine(visitedArr[i])
    }

    bw.write(strBuilder.trim().toString())
    bw.flush()
    bw.close()
    br.close()
}
profile
안드로이드 개발자 Gyu 의 개발 블로그 !

0개의 댓글