-
[백준] 21937 작업 Kotlin개발/알고리즘 2023. 1. 21. 10:32
https://www.acmicpc.net/problem/21937
역방향으로 시작해 방문한 노드의 갯수만 세어주면 된다. dfs를 돌때마다 방문 처리를 하고 count를 return 한다. 처음 방문도 count를 세므로 출력전 -1을 해준다.
import java.io.BufferedReader import java.io.InputStreamReader var graph: Array<MutableList<Int>> = arrayOf() var visited = booleanArrayOf() fun main(): Unit = with(BufferedReader(InputStreamReader(System.`in`))) { 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[y].add(x) } val dest = readLine().toInt() println(dfs(dest) - 1) } fun dfs(start: Int): Int { if (visited[start]) return 0 visited[start] = true var count = 1 for (next in graph[start]) count += dfs(next) return count }
'개발 > 알고리즘' 카테고리의 다른 글
[백준] 1193 분수찾기 Kotlin (0) 2023.04.28 [백준] 5568 카드 놓기 Kotlin (0) 2023.04.27 [백준] 2589 보물섬 Kotlin (0) 2023.04.13 [백준] 14496 그대, 그머가 되어 Kotlin (0) 2023.01.23 [백준] 1058 친구 Kotlin (0) 2023.01.20