알고리즘/DFS_BFS

BJ S3 2606 바이러스 -Java

naksnaks 2024. 10. 9.
반응형

[문제링크]

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


[문제]

신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다.

예를 들어 7대의 컴퓨터가 <그림 1>과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다.

어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성하시오.


[입력]

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


[출력]

1번 컴퓨터가 웜 바이러스에 걸렸을 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 첫째 줄에 출력한다.


[예제 입력 1]

7
6
1 2
2 3
1 5
5 2
5 6
4 7

[예제 출력 1]

4

 


[설명]

BFS, DFS의 전형적인 문제이다.1과 연결된 번호마다 돌며 visited = false인 곳에서만 cnt를 더해준다.

 

 

 

백준 알고리즘 2606번 JAVA풀이

 

import java.util.*;

public class BJ2606 {
    public static int cnt = 0;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        int[][] arr = new int[N+1][N+1];
        boolean[] visited = new boolean[N+1];

        for(int i=0;i<M;i++){
            int a = sc.nextInt();
            int b = sc.nextInt();
            arr[a][b]=1;
            arr[b][a]=1;
        }

        visited[1]=true;
        dfs(1, N, visited, arr);

        System.out.println(cnt);
    }

    public static void dfs(int p, int N, boolean[] visited, int[][] arr) {
        for(int i=1;i<=N;i++){
            if(arr[p][i]==1 && !visited[i]){
                cnt++;
                visited[i]=true;
                dfs(i, N, visited, arr);
            }
        }
    }
}

 

 

 

궁금하신 부분이나 부족한 점은 댓글로 알려주시면 감사하겠습니다.

 

'알고리즘 > DFS_BFS' 카테고리의 다른 글

BJ S2 1260 DFS와 BFS - Java  (1) 2025.01.12
BJ S2 11724 연결요소의개수 - Java  (2) 2024.10.09
BJ S2 21736 헌내기는 친구가 필요해 - Java  (0) 2024.10.02
BJ G5 7569 토마토 - Java  (1) 2024.10.01
BJ_G4_14502_연구소 - Java  (0) 2022.10.07

댓글

💲 추천 글