[白準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
}
Reference
この問題について([白準2606]ウイルス), 我々は、より多くの情報をここで見つけました
https://velog.io/@j_aion/백준-2606-바이러스-gv3slke0
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
一般的な検索アルゴリズムで解くことができる.ソースコンピュータの数を除外する必要があります.
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
}
Reference
この問題について([白準2606]ウイルス), 我々は、より多くの情報をここで見つけました
https://velog.io/@j_aion/백준-2606-바이러스-gv3slke0
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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
}
Reference
この問題について([白準2606]ウイルス), 我々は、より多くの情報をここで見つけました https://velog.io/@j_aion/백준-2606-바이러스-gv3slke0テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol