5567번: 결혼식
문제 풀이 아이디어
# 자료구조/알고리즘
: bfs
# 풀이방법
1. 입력받은 친구관계를 인접리스트로 만듭니다.
2. bfs를 통해서 거리가 2 이내의 친구만 셉니다.
코드
struct Queue {
var queue = [(Int, Int)]()
var index = 0
var isEmpty: Bool {
queue.count - index == 0
}
mutating func push(_ tuple: (Int, Int)) {
queue.append(tuple)
}
mutating func pop() -> (Int, Int) {
defer {
index += 1
}
return queue[index]
}
}
func bfs() {
var queue = Queue()
var check = Array(repeating: false, count: n + 1)
var cnt = 0
queue.push((1, 0))
check[1] = true
while !queue.isEmpty {
let now = queue.pop()
if now.1 > 1 {
break
}
for i in adj[now.0] {
if check[i] { continue }
queue.push((i, now.1 + 1))
check[i] = true
cnt += 1
}
}
print(cnt)
}
let n = Int(readLine()!)!
let m = Int(readLine()!)!
var adj = Array(repeating: [Int](), count: n + 1)
for _ in 0..<m {
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
adj[input[0]].append(input[1])
adj[input[1]].append(input[0])
}
bfs()