
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()
}