[๋ฐฑ์ค] (Swift) 11403๋ฒ - ๊ฒฝ๋ก์ฐพ๊ธฐ (DFS๋ก ํ๊ธฐ)
๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/11403
11403๋ฒ: ๊ฒฝ๋ก ์ฐพ๊ธฐ
๊ฐ์ค์น ์๋ ๋ฐฉํฅ ๊ทธ๋ํ G๊ฐ ์ฃผ์ด์ก์ ๋, ๋ชจ๋ ์ ์ (i, j)์ ๋ํด์, i์์ j๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์๋์ง ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
www.acmicpc.net
๐ ๋ฌธ์ ํ์ด
start์ง์ ์ ๊ธฐ์ค์ผ๋ก dfs๋ฅผ ๋๋ ค์ค ๊ฒ์ด๋ค.
dfs๋ ๋๊ฐ์ง์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌ๋ฐ์ ๊ฑด๋ฐ, ์๋ถ๋ถ์ (์์ ํ), ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ (ํ์ฌ ๋ณด๊ณ ์๋ํ)์ผ๋ก ๊ธฐ์ตํ๋ฉด๋๋ค. ๊ทธ๋์ ์ด๊ฒ์ ๋๋ ค์ฃผ๋ฉด, ์๋์ฒ๋ผ ๋์๊ฐ๊ฒ ๋๋ค.
๐ ์ ๋ต ์ฝ๋
GitHub - deslog/Algorithm: โจ ๋ฐฑ์ค, ํ๋ก๊ทธ๋๋จธ์ค Swift ๋ฌธ์ ํ์ด โจ
โจ ๋ฐฑ์ค, ํ๋ก๊ทธ๋๋จธ์ค Swift ๋ฌธ์ ํ์ด โจ. Contribute to deslog/Algorithm development by creating an account on GitHub.
github.com
import Foundation
let n = Int(readLine()!)!
var graph = [[Int]]()
for i in 0..<n {
graph.append(readLine()!.split(separator: " ").map { Int(String($0))! })
}
var visited = Array(repeating: false, count: n)
var result = Array(repeating: Array(repeating: 0, count: n), count: n)
func dfs(start: Int, now: Int) {
for i in 0..<n {
if graph[now][i] == 1 && !visited[i] {
result[start][i] = 1
visited[i] = true
dfs(start: start, now: i)
}
}
}
for i in 0..<n {
dfs(start: i, now: i)
visited = Array(repeating: false, count: n)
}
for j in result {
for r in j {
print(r, terminator: " ")
}
print()
}