문제 풀이/C#

[2606] - 바이러스

Chamber 2022. 9. 27. 23:48

https://www.acmicpc.net/problem/2606

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어

www.acmicpc.net

 

문제 풀이

1. 입력받은 컴퓨터 쌍으로 그래프 생성

2. 1번 컴퓨터 부터 시작하니 큐에 1 집어 넣고 방문 표시

3. bfs 탐색 후 방문된 컴퓨터 마다 카운트 증가

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;

namespace Baekjoon.silver
{
    class _2606
    {
        static void Main(string[] args)
        {

            int n = int.Parse(Console.ReadLine());
            int m = int.Parse(Console.ReadLine());
            Dictionary<int, List<int>> line = new Dictionary<int, List<int>>();
            for(int i = 1; i<= n; i++)
                line[i] = new List<int>();

            for(int i= 0; i<m; i++)
            {
                int[] l = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
                line[l[0]].Add(l[1]);
                line[l[1]].Add(l[0]);
            }

            bool[] visit = new bool[n + 1];
            Queue<int> queue = new Queue<int>();
            queue.Enqueue(1);
            visit[1] = true;
            int count = 0;

            while(queue.Count > 0)
            {
                int dot = queue.Dequeue();
                foreach(int i in line[dot])
                {
                    if (!visit[i])
                    {
                        count++;
                        visit[i] = true;
                        queue.Enqueue(i);
                    }
                }
            }

            Console.WriteLine(count);
        }
    }
}