2606: 바이러스
문제 )
새로운 유형의 바이러스인 웜 바이러스는 네트워크를 통해 확산됩니다. 컴퓨터가 웜 바이러스에 감염되면 해당 컴퓨터에 네트워크로 연결된 모든 컴퓨터가 웜 바이러스에 감염됩니다.
예를 들어 다음과 같이 7대의 컴퓨터가 네트워크에 연결되어 있다고 가정합니다.
어느 날 컴퓨터 1호가 웜 바이러스에 감염되었습니다. 컴퓨터의 수와 네트워크에 연결된 방법에 대한 정보가 주어지면 컴퓨터 번호 1을 통해 웜 바이러스에 감염된 컴퓨터의 수를 보고하는 프로그램을 작성하십시오.
입력:
첫 번째 줄은 컴퓨터 수를 나타냅니다. 컴퓨터의 수는 100대 미만이며 각 컴퓨터는 번호 1부터 순차적으로 번호가 매겨집니다. 두 번째 줄은 네트워크에 직접 연결된 컴퓨터 쌍의 수를 나타냅니다. 그런 다음 네트워크에 직접 연결된 컴퓨터 수만큼의 숫자 쌍이 한 줄에 하나씩 주어집니다.
누르다 :
1번 컴퓨터가 웜 바이러스에 감염된 경우 첫 번째 줄은 1번 컴퓨터를 통해 웜 바이러스에 감염된 컴퓨터의 수를 보고합니다.
![[백준] 2606번 : 바이러스 2](https://blog.kakaocdn.net/dn/QWEHq/btr0dqy29xO/cxpCdvGqwp916lYE6Ar081/img.png)
설명)
|
하나
2
삼
4
5
6
7
8일
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#포함하다 <iostream>
#포함하다 <대기줄>
#포함하다 <벡터>
사용 네임스페이스 기본;
벡터<벡터<내부>> vec;
벡터<내부> 방문;
내부 주로()
{
내부 엔, 엠;
친 >> N >> 중;
// 방문 처리 벡터
// 크기 조정을 사용하여 벡터만 해결
vec. 크기 조정(n + 하나);
방문했다. 크기 조정(n + 하나);
// 양방향으로 연결되어 있기 때문에
내부 떨어져 있는;
~을 위한 (내부 나 = 0; 나 < 중; 나++)
{
친 >> ㅏ >> 비;
vec(a).푸시백(비);
vec(b).푸시백(ㅏ);
}
// bfs를 위한 큐
대기줄<내부> 큐;
// 컴퓨터 1부터 시작
큐. 누르다 (하나);
방문(하나) = 하나;
내부 컴퓨터 = 0;
~하는 동안 (!q.빈())
{
내부 행동 = 큐앞쪽();
큐팝();
~을 위한 (자동차& nxt : vec(현재))
{
// 이미 방문한 경우 건너뜁니다.
만약에 (방문 (다음)) 계속해;
큐. 푸시(nxt);
방문 (다음) = 하나;
컴퓨터++;
}
}
// 감염된 컴퓨터의 총 수를 출력합니다.
쿠우트 << 컴퓨터;
돌려 주다 0;
}
|
CS |
원천 : https://www.acmicpc.net/problem/2606
2606: 바이러스
첫 번째 줄은 컴퓨터 수를 나타냅니다. 컴퓨터의 수는 100대 미만이며 각 컴퓨터는 번호 1부터 순차적으로 번호가 매겨집니다. 두 번째 줄은 네트워크에 직접 연결된 컴퓨터 쌍의 수를 나타냅니다.
www.acmicpc.net
