[백준 알고리즘]/[C++]

5567번 결혼식 | BFS | 백준 5567 C++ 코드

말하는펭귄 2021. 2. 19. 21:05
728x90
반응형

 

 

 

이번 포스팅은 백준 5567번 결혼식입니다.

아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.

www.acmicpc.net/problem/5567

 

5567번: 결혼식

2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2,3,4 3명의 친구를 결혼식에 초대한다.

www.acmicpc.net

 

 

 

기본 알고리즘

BFS 너비 우선 탐색

 

 

 

전체 코드

 

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
//백준5567 결혼식                                                                    
 
#include <iostream>
using namespace std;
 
int n, m;
const int MAX = 501;
int map[MAX][MAX];
bool visited[MAX];
bool sFriend[MAX]; //상근이와 친구 여부
int ans = 0;
 
void count() {
    //상근이의 친구 
    for (int i = 2; i <= n; i++) {
        if (map[1][i] == 1) {
            visited[i] = true//방문
            sFriend[i] = true//상근이와 친구
        }
    }
    //상근이의 친구의 친구
    for (int i = 2; i <= n; i++) {
        if (sFriend[i]) { //상근이와 친구 
            for (int j = 1; j <= n; j++) {
                if (map[i][j]) { //친구의 친구
                    visited[j] = true//방문
                }
            }
        }
    }
    //초대 인원 계산
    for (int i = 2; i <= n; i++) {
        if (visited[i]) {
            ans++;
        }
    }
}
 
int main() {
    cin >> n;
    cin >> m;
 
    while (m--) {
        int a, b;
        cin >> a >> b;
        map[a][b] = 1;
        map[b][a] = 1;
    }
 
    count();
    cout << ans;
}
cs

 

 

 

 

728x90
반응형