[알고리즘] 백준-2606 바이러스

1973 단어 algorithmalgorithm

✍ 문제

👏 풀이과정

처음 문제를 보자마자 쉬운 문제라 생각됬다. BFS,DFS를 사용하여 푸는 문제라 생각되 빠르게 진행 할 수 있었다.

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class bak_2606 {
    static int computer_num = 100;
    static int m = 50 * 99;
    static int[][] graph = new int[100][100];
    static boolean[] visit = new boolean[100];
    static int count = 0;
    static Queue<Integer> queue = new LinkedList<>();
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        computer_num = sc.nextInt();
        graph = new int[computer_num][computer_num];
        visit = new boolean[computer_num];
        m = sc.nextInt();
        int x = 0;
        int y = 0;

        for(int i = 0; i < m; i++){
                x = sc.nextInt();
                y = sc.nextInt();
                graph[x - 1][y - 1] = 1;
                graph[y - 1][x - 1] = 1;

        }
	// 1. dfs
        //dfs(0); 
    	// 2. bfs
        //bfs(0);
        System.out.println(count);
    }
    static void bfs(int root){
        visit[root] = true;
        for(int i = 0; i < computer_num; i++){
            if(graph[root][i] == 1 && visit[i] == false){
                queue.add(root * 1000 + i);
                count++;
            }
        }
        bfs(queue.poll() % 1000);
    }
    static void dfs(int root){
        visit[root] = true;
        for(int j = 0; j < computer_num; j++){

            if(graph[root][j] == 1 && visit[j] == false){
                count++;
                dfs(j);
            }

        }
        return;
    }
}

좋은 웹페이지 즐겨찾기