개발 공부 기록
Published 2022. 3. 6. 21:32
백준 2620 자바 풀이 알고리즘/백준
728x90

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

 

2606번: 바이러스

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

www.acmicpc.net

1260문제의 인접행렬로 DFS풀기를 이용하여 2606 문제를 풀어보고자 한다.

방향이 없으므로 양방향으로 추가해준다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class bj2606 {
    static int N, M, cnt;
    static ArrayList<Integer>[] lists;
    static boolean[] visit;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        N = Integer.parseInt(br.readLine());
        M = Integer.parseInt(br.readLine());
        cnt = 0;

        lists = new ArrayList[N + 1];
        visit = new boolean[N + 1];


        for (int i = 1; i <= N; i++) {
            lists[i] = new ArrayList<>();
        }

        StringTokenizer st;

        for (int i = 0; i < M; i++) {
            st = new StringTokenizer(br.readLine());
            int from = Integer.parseInt(st.nextToken());
            int to = Integer.parseInt(st.nextToken());

            lists[from].add(to);
            lists[to].add(from);
        }

        DFS(1);

        System.out.println(cnt - 1);
    }

    private static void DFS(int v) {
        visit[v] = true;
        cnt ++;

        for(int i = 0; i < lists[v].size(); i ++) {
            int cur = lists[v].get(i);
            if(!visit[cur]) DFS(cur);
        }
    }
}

 

728x90

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

백준 1303 자바 풀이  (0) 2022.03.10
백준 2501 자바 풀이  (0) 2022.03.08
백준 11279 자바 풀이  (0) 2022.03.08
백준 1697 자바 풀이  (0) 2022.03.08
백준 1260 자바 풀이  (0) 2022.03.06
profile

개발 공부 기록

@찐만두

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!