-
[백준] 14496 그대, 그머가 되어 Kotlin개발/알고리즘 2023. 1. 23. 09:59
https://www.acmicpc.net/problem/14496
평범한 bfs 문제이다. Queue를 이용한 bfs에서는 Queue에 넣는 순간 방문처리를 해야 시간초과를 피할 수 있다.
import java.io.BufferedReader import java.io.InputStreamReader import java.util.LinkedList import java.util.Queue var graph: Array<MutableList<Int>> = arrayOf() var visited = booleanArrayOf() var count = -1 fun main(): Unit = with(BufferedReader(InputStreamReader(System.`in`))) { val (a, b) = readLine().split(" ").map { it.toInt() } val (n, m) = readLine().split(" ").map { it.toInt() } graph = Array(n + 1) { mutableListOf() } visited = BooleanArray(n + 1) { false } repeat(m) { val (x, y) = readLine().split(" ").map { it.toInt() } graph[x].add(y) graph[y].add(x) } if (a == b) println(0) else { bfs(a, b) println(count) } } fun bfs(start: Int, dest: Int) { val queue: Queue<Pair<Int, Int>> = LinkedList() graph.forEachIndexed { index, ints -> if (ints.contains(start)) { queue.add(index to 1) visited[index] = true } } while (queue.isNotEmpty()) { val q = queue.poll() if (q.first == dest) { count = q.second return } for (next in graph[q.first]) { if (!visited[next]) { queue.add(next to q.second + 1) visited[next] = true } } } }
'개발 > 알고리즘' 카테고리의 다른 글
[백준] 1193 분수찾기 Kotlin (0) 2023.04.28 [백준] 5568 카드 놓기 Kotlin (0) 2023.04.27 [백준] 2589 보물섬 Kotlin (0) 2023.04.13 [백준] 21937 작업 Kotlin (0) 2023.01.21 [백준] 1058 친구 Kotlin (0) 2023.01.20