반응형
[풀이] 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 |