Algorithm
[Swift 백준] 5567 결혼식
Kim Roks
2025. 2. 19. 21:26
풀이 아이디어
그래프 탐색 문제입니다.
문제를 조금 자세히 읽어봐야하는데
초대 인원은 자신의 친구, 친구의 친구까지입니다.
본인과의 거리가 2까지인 사람이 초대받는 사람입니다.
방문배열과 거리배열을 사용해서 bfs로 풀이했습니다.
풀이
let n = Int(readLine()!)!
let m = Int(readLine()!)!
var graph: [[Int]] = Array(repeating: [], count: n + 1)
for _ in 0..<m {
let ab = readLine()!.split(separator:" ").map{Int($0)!}
let (a,b) = (ab[0],ab[1])
//양방향 그래프입니다
graph[a].append(b)
graph[b].append(a)
}
var isVisited: [Bool] = Array(repeating: false, count: n + 1)
var distance: [Int] = Array(repeating: -1, count: n + 1)
func bfs() {
// 따로 인자는 받지않고 주인공을 시작점으로 함수를 만들었습니다
var q = [1]
isVisited[1] = true
distance[1] = 0
while !q.isEmpty {
let current = q.removeFirst()
for next in graph[current] {
if !isVisited[next] {
//방문처리와 거리를 증가시켜줍니다.
isVisited[next] = true
distance[next] = distance[current] + 1
q.append(next)
}
}
}
var count = 0
//본인을 제외한 모든 사람의 거리를 가져옵니다
for i in 2..<n+1 {
if distance[1] == 1 || distance[i] == 2 {
count += 1
}
}
print(count)
}
bfs()