https://www.acmicpc.net/problem/5567
먼저 친구관계를 인접 리스트로 구현해주고 입력받은 값이 상근이의 친구(1번과 친구)인 경우 바로 큐에 넣어주고 체크한다. 그럼 처음 큐의 사이즈는 상근이의 친구들 수만큼이 되므로 ans 변수(초대할 친구 수)에 큐 사이즈를 저장한다
그리고 상근이의 친구들에 대해서 친구를 조사해준다. 아직 check가 되지 않았다면 ans값\을 증가시킨다. 친구의 친구만 더해주면 되므로 친구의 친구는 큐에 새로 넣지 않는다.
1
2
3
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
|
#include<iostream>
#include <vector>
#include <queue>
using namespace std;
int n, m;
vector<int> list[501];
bool check[501];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
queue<int> q;
cin >> n >> m;
int x, y;
for (int i = 0; i<m; i++) {
cin >> x >> y;
list[x].push_back(y);
list[y].push_back(x);
//상근이의 친구를 큐에 넣는다.
if (x == 1) {
q.push(y);
check[y] = true;
}
else if (y == 1) {
q.push(x);
check[x] = true;
}
}
//현재 큐 사이즈가 상근이의 친구 수
int ans = q.size();
check[1] = true;
int size;
while (!q.empty()) {
x = q.front();
q.pop();
size = list[x].size();
for (int k = 0; k < size; k++) {
y = list[x][k];
if (check[y]) continue;
ans++;
check[y] = true;
}
}
cout << ans << '\n';
return 0;
}
Colored by Color Scripter
|
'BOJ' 카테고리의 다른 글
[BOJ] 1654. 랜선 자르기 (0) | 2020.01.20 |
---|---|
[BOJ] 10816. 숫자 카드 2 (0) | 2020.01.20 |
[BOJ] 7662. 이중 우선순위 큐 (0) | 2019.11.13 |
[BOJ] 17472. 다리 만들기 2 (0) | 2019.10.16 |
[BOJ] 2146. 다리 만들기 (0) | 2019.10.16 |