시배's Android

Algorithm | 백준 Kotlin 1206 사람의 수 본문

Algorithm

Algorithm | 백준 Kotlin 1206 사람의 수

si8ae 2023. 10. 9. 10:28
 

1206번: 사람의 수

첫째 줄에 N이 주어진다. 둘째 줄부터 N개의 줄에 각 문항의 평균 점수가 주어진다. N은 50보다 작거나 같은 자연수이고, 평균 점수는 0보다 크거나 같고, 10보다 작거나 같은 소수이다. 항상 소수

www.acmicpc.net

 

import java.util.*

private val visited = Array(1001) { false }
private val edges = Array<MutableList<Int>>(1001) { mutableListOf() }

private fun dfs(v: Int) {
    if (visited[v]) return
    visited[v] = true

    print("$v ")
    edges[v].forEach { dfs(it) }
}

private fun bfs(v: Int) {
    val q: Queue<Int> = LinkedList()
    q.add(v)

    while (!q.isEmpty()) {
        val p = q.poll()
        if (visited[p]) continue
        visited[p] = true

        print("$p ")
        edges[p].forEach { q.add(it) }
    }
}

private fun main() {
    val (n, m, v) = readLine()!!.split(" ").map { it.toInt() }

    repeat(m) {
        val (a, b) = readLine()!!.split(" ").map { it.toInt() }
        edges[a].add(b)
        edges[b].add(a)
    }

    edges.forEach { it.sort() }
    dfs(v)
    println()
    visited.fill(false)
    bfs(v)
}