반응형

[풀이] BFS로 접근 > 바이러스가 퍼지는 PC를 Queue에 담고 Queue에서 연결된 PC 개수 조회

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

public class Baekjoon2606 {

	static int pc;
	static int network;
	static int[][] map;
	static int[] visit;
	static int cnt =0;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner sc = new Scanner(System.in);
		
		pc = 0 ;
		network = 0;
		
		pc = sc.nextInt();
		network = sc.nextInt();
		map = new int[pc+1][pc+1];
		visit = new int[pc+1];
		
		for(int i=0;i<network;i++) {
			int n = sc.nextInt();
			int m = sc.nextInt();
			
			map[n][m] = 1;
			map[m][n] = 1;
		}		
		
		virusMove();
		System.out.println(cnt-1); // 1번 컴퓨터를 제외 한 수
		
	}
	
	public static void virusMove() {
		Queue<Integer> queue = new LinkedList<Integer>();
		queue.add(1);
		
		while(!queue.isEmpty()) {
			int startPc = queue.poll();
			
			for(int i=1;i<=pc;i++) {
				if(map[startPc][i] == 1 && visit[i] != 1) {
					// 방문하지 않은 연결된 PC 시작점 Queue에 추가
					queue.add(i);
					visit[i] = 1;
					cnt++;
				}
			}
		}
	}
}

[Github] github.com/blackmount22/Algorithm/blob/master/Baekjoon2606.java

[Baekjoon] www.acmicpc.net/problem/2606

 

2606번: 바이러스

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

www.acmicpc.net

 

반응형

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

[Baekjoon] #1157 단어 공부  (0) 2022.03.06
[Baekjoon] #2675 문자열 반복  (0) 2022.03.05
[Baekjoon] #3184 양  (0) 2020.04.28
[ Baekjoon ] #2178 미로 탐색  (0) 2020.04.26
[ Baekjoon ] #7576 토마토  (0) 2020.04.22

+ Recent posts