C# 2606번 바이러스

2022. 3. 4. 18:58C#/[백준] DFS와 BFS

문제

코드 :

using System;
using System.Collections.Generic;
namespace _2
{
    class Program
    {
        static int N;
        static int M;

        static int count;

        static public int[,] map = new int[101, 101];
        static public bool[] visited = new bool[101];

        static public Queue<int> queue = new Queue<int>();

        static void Reset()
        {
            for (int i = 1; i <= N; i++)
            {
                visited[i] = false;
            }
        }
        static void BFS()
        {
            queue.Enqueue(1);
            visited[1] = true;

            int start;

            while (queue.Count != 0)
            {
                //큐에서 나오는 값을 시작변수로 계속 바꿔줘야함
                start = queue.Dequeue();
                count++;
                for (int i = 1; i <= N; i++)
                {
                    if (map[start, i] == 1 && visited[i] == false)
                    {
                        queue.Enqueue(i);
                        visited[i] = true;
                    }
                }
            }
        }
        static void Main(string[] args)
        {
            N = Convert.ToInt32(Console.ReadLine());
            M = Convert.ToInt32(Console.ReadLine());

            for (int i = 0; i < M; i++)
            {
                int[] mArray = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
                map[mArray[0], mArray[1]] = 1;
                map[mArray[1], mArray[0]] = 1;
            }

            Reset();
            BFS();
            Console.WriteLine(count-1);
        }
    }
}

풀이 :

BFS를 활용하여 풀었다. 큐에서 Dequeue()하는 순간 count하여 몇개인지 확인했다.

'C# > [백준] DFS와 BFS' 카테고리의 다른 글

C# 7576번 토마토  (0) 2022.03.13
C# 2178번 미로 탐색  (0) 2022.03.12
C# 1012번 유기농 배추  (0) 2022.03.12
C# 2667번 단지번호붙이기  (0) 2022.03.04
C# 1260번 DFS와 BFS  (0) 2022.03.04