[白俊-1043]うそをつく
13036 ワード
質問リンク
アノテーションコードのない開発者の作成に力を入れています.
意図不明な(理解できない)コードがあれば、ご自由にお返事ください.本当にありがとうございます.
fun main() {
val bufferedReader = System.`in`.bufferedReader()
val bufferedWriter = System.out.bufferedWriter()
val (n, m) = bufferedReader.readLine().split(" ").map { it.toInt() }
val detectors = Array(n + 1) { false }
val parents = createParents(n)
bufferedReader.readLine()
.split(" ")
.map { it.toInt() }
.drop(1) // ▶ 진실을 아는 사람의 수는 무시
.forEach {
detectors[it] = true
}
val person = mutableListOf<Int>()
repeat(m) {
val parties = bufferedReader.readLine()
.split(" ")
.map { it.toInt() }
.drop(1) // ▶ 파티에 오는 사람의 수는 무시
person.add(parties[0])
for (i in 1 until parties.size) {
unionPeople(detectors, parents, parties[i - 1], parties[i])
}
}
var answer = 0
person.forEach {
if (!detectors[getParent(parents, it)]) answer++
}
bufferedWriter.write("$answer")
bufferedReader.close()
bufferedWriter.close()
}
fun createParents(n: Int): Array<Int> {
val array = Array(n + 1) { 0 }
for (i in 1 until n + 1) {
array[i] = i
}
return array
}
fun unionPeople(detectors: Array<Boolean>, peopleParent: Array<Int>, first: Int, second: Int) {
val a = getParent(peopleParent, first)
val b = getParent(peopleParent, second)
if (detectors[a]) {
peopleParent[b] = a
} else {
peopleParent[a] = b
}
}
fun getParent(peopleParent: Array<Int>, first: Int): Int {
if (peopleParent[first] == first) return first
peopleParent[first] = getParent(peopleParent, peopleParent[first])
return peopleParent[first]
}
アノテーションコードのない開発者の作成に力を入れています.
意図不明な(理解できない)コードがあれば、ご自由にお返事ください.本当にありがとうございます.
Reference
この問題について([白俊-1043]うそをつく), 我々は、より多くの情報をここで見つけました https://velog.io/@kldaji/백준-1043-거짓말テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol