난이도: 실버 2
Code
let n = Int(readLine()!)!
let sf = readLine()!.split(separator: " ").map { Int($0)! }
let start = sf[0]
let finish = sf[1]
let m = Int(readLine()!)!
var visited = Array(repeating: false, count: n + 1)
var links: [[Int]] = Array(repeating: [], count: n + 1)
for _ in 0..<m {
let v = readLine()!.split(separator: " ").map { Int($0)! }
links[v[0]].append(v[1])
links[v[1]].append(v[0])
}
var result = 0
var isSuccess = false
func dfs(start: Int, count: Int) {
visited[start] = true
if start == finish {
result = count
isSuccess = true
return
}
for i in links[start] {
if !visited[i] {
dfs(start: i, count: count + 1)
}
}
}
dfs(start: start, count: 0)
result = isSuccess ? result : -1
print(result)
'코테' 카테고리의 다른 글
[DFS] 백준 1707번: 이분 그래프(Swift) (0) | 2022.11.11 |
---|---|
[DFS + DP] 백준 1520번: 내리막길(Swift) (0) | 2022.11.11 |
[BFS] 백준: 영역 구하기(Swift) (0) | 2022.11.08 |
[DFS] 백준 11725번: 트리의 부모 찾기(Swift) (0) | 2022.11.07 |
[DFS] 백준 1987번: 알파벳(Swift) (0) | 2022.11.02 |