1613번: 역사 - Swift
난이도 - 골드3🥇
알고리즘 분류: 그래프, 플로이드와샬
🧐 문제접근
n = 400 이므로, 플로이드 와샬로 한방에 풀 수 있다
대체 왜 골드3인지..?
전체코드
//1613번
func floyidWarshall() {
for k in 1...n {
for i in 1...n {
for j in 1...n where !arr[i][j] {
if arr[i][k], arr[k][j] {
arr[i][j] = true
}
}
}
}
}
let nk = readLine()!.split(separator: " ").map{Int(String($0))!}
let n = nk[0], k = nk[1]
var arr = Array(repeating: Array(repeating: false, count: n+1), count: n+1)
for _ in 0..<k {
let ab = readLine()!.split(separator: " ").map{Int(String($0))!}
let a = ab[0], b = ab[1]
arr[a][b] = true
}
floyidWarshall()
let s = Int(readLine()!)!
for _ in 0..<s {
let ab = readLine()!.split(separator: " ").map{Int(String($0))!}
let a = ab[0], b = ab[1]
if arr[a][b] {
print(-1)
} else if arr[b][a] {
print(1)
} else {
print(0)
}
}
Author And Source
이 문제에 관하여(1613번: 역사 - Swift), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@aurora_97/백준-1613번-역사-Swift저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)