[BOJ 실버2] 촌수계산 Kotlin
문제
풀이
- 인접리스트 + BFS 풀이
코드
import java.util.*
import kotlin.collections.ArrayList
fun main(args: Array<String>) = with(System.`in`.bufferedReader()){
var n = readLine().toInt()
var (start,target) = readLine().split(" ").map{it.toInt()}
var case = readLine().toInt()
var list = Array(n+1){
ArrayList<Int>()
}
repeat(case){
val (a,b) = readLine().split(" ").map{it.toInt()}
list[a].add(b)
list[b].add(a)
}
var ans = bfs(list,start,target)
println(if(ans==n+1) -1 else ans)
}
fun bfs(list: Array<ArrayList<Int>>, start: Int, target: Int) : Int {
val q = LinkedList<Int>()
val visit = BooleanArray(list.size){false}
q.add(start)
visit[start]= true
var dist= IntArray(list.size){list.size}
dist[start] = 0
while(!q.isEmpty()){
val cur = q.poll()
if(cur==target){
break
}
for(t in list[cur]){
if(!visit[t]){
q.add(t)
dist[t] = dist[cur]+1
visit[t] = true
}
}
}
return dist[target]
}
Author And Source
이 문제에 관하여([BOJ 실버2] 촌수계산 Kotlin), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jihoon97/BOJ-실버2-촌수계산-Kotlin저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)