[白準2606]ウイルス


1.問題の説明


ウイルス

2.問題分析


一般的な検索アルゴリズムで解くことができる.ソースコンピュータの数を除外する必要があります.

3.私の回答

import Foundation
let N:Int = Int(readLine()!)!
let M:Int = Int(readLine()!)!
var nodes: [[Int]] = Array(repeating: [], count: N+1)
for _ in 0..<M{
    let input = readLine()!.split(separator:" ").map{Int(String($0))!}
    let (node1, node2) = (input[0], input[1])
    nodes[node1].append(node2)
    nodes[node2].append(node1)
//  연결 그래프 생성
}

let answer = BFS(startNode:1)
print(answer)

func BFS(startNode:Int)->Int{
    var visited = Array(repeating: false, count: N+1)
    visited[startNode] = true
    var queue = [startNode]
    var total = -1
//  원본 컴퓨터는 제외해야 한다.
    
    while queue.isEmpty == false{
        let curNode = queue.removeFirst()
        total += 1
        
        for nextNode in nodes[curNode]{
            if visited[nextNode] == false{
                visited[nextNode] = true
                queue.append(nextNode)
            }
        }
    }
    return total
}