[BOJ] 2606 바이러스

김재익·2023년 7월 8일
0

알고리즘

목록 보기
8/10
post-thumbnail

문제

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

코드

public class Main {
    static boolean[] check;
    static boolean[][] computers;

    static int numberOfComputers, pair, count;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        numberOfComputers = Integer.parseInt(br.readLine());
        pair = Integer.parseInt(br.readLine());
        check = new boolean[numberOfComputers+1];

        computers = new boolean[numberOfComputers + 1][numberOfComputers + 1];
        for (int i = 0; i < pair; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());

            computers[a][b] = computers[b][a] = true;
        }

        count = 0;
        dfs(1);

        System.out.println(count);
    }

    private static void dfs(int start) {
        check[start] = true;

        for (int i = 1; i <= numberOfComputers; i++) {
            if (computers[start][i] && !check[i]) {
                count++;
                dfs(i);
            }
        }
    }
}

1260번 dfs와 bfs문제를 풀었던 것을 참고해서 간단하게 풀 수 있었다. 주제별로 10문제 정도는 풀어야 기본적인 틀을 안보고 작성할 수 있을 것 같다.

profile
개발자호소인

0개의 댓글