[백준 5567번] 결혼식

2020. 3. 22. 22:20·알고리즘 문제풀이/백준
반응형

문제 링크: https://www.acmicpc.net/problem/5567

 

5567번: 결혼식

문제 상근이는 자신의 결혼식에 학교 동기 중 자신의 친구와 친구의 친구를 초대하기로 했다. 상근이의 동기는 모두 N명이고, 이 학생들의 학번은 모두 1부터 N까지이다. 상근이의 학번은 1이다. 상근이는 동기들의 친구 관계를 모두 조사한 리스트를 가지고 있다. 이 리스트를 바탕으로 결혼식에 초대할 사람의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이의 동기의 수 n (2 ≤ n ≤ 500)이 주어진다. 둘째 줄에는 리스트의 길이 m (1 ≤ m

www.acmicpc.net

<문제 풀이> 그래프, BFS

자신의 친구와, 친구의 친구까지 초대하는 거니깐 BFS로 자신의 위치인 1번 정점에서 거리가 최대 3까지만 탐색하면 됩니다.

무방향 그래프이므로 인접 리스트를 양방향으로 갱신해줍니다.

 

거리를 체크하는 방법은 큐에 next를 삽입하고 visited배열로 방문 체크할 때 다음과 같이 거리에 대한 정보를 넣어주면 됩니다.

visited[next] = visited[cur] + 1;

<C++ 소스 코드>

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
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
 
int n, m;
int visited[501];
vector<vector<int> > adj(501);
int cnt = 0;
 
void bfs() {
    queue<int> q;
    q.push(1);
    visited[1] = 1;
    while (!q.empty()) {
        int cur = q.front();
        q.pop();
        for (auto& next : adj[cur]) {
            if (visited[next] || visited[cur] >= 3)continue;
            q.push(next);
            visited[next] = visited[cur] + 1;
            cnt++;
        }
    }
}
 
int main(void) {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    
    cin >> n >> m;
    for (int i = 0; i < m; i++) {
        int u, v;
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    bfs();
    cout << cnt;
    
 
    return 0;
}
Colored by Color Scripter
cs

 

반응형
저작자표시 (새창열림)

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 1043번] 거짓말  (0) 2020.03.25
[백준 6118번] 숨바꼭질  (0) 2020.03.23
[백준 2606번] 바이러스  (0) 2020.03.22
[백준 1260번] DFS와 BFS  (0) 2020.03.22
[백준 11724번] 연결 요소의 개수  (0) 2020.03.21
'알고리즘 문제풀이/백준' 카테고리의 다른 글
  • [백준 1043번] 거짓말
  • [백준 6118번] 숨바꼭질
  • [백준 2606번] 바이러스
  • [백준 1260번] DFS와 BFS
슥지니
슥지니
개발 블로그
  • 슥지니
    슥지니의 코딩노트
    슥지니
  • 전체
    오늘
    어제
    • 분류 전체보기 (199)
      • 알고리즘 문제풀이 (158)
        • 백준 (158)
      • 알고리즘 (6)
      • Node.js (2)
        • MongoDB (1)
        • 기타 (1)
      • spring (0)
      • 가상화폐 (1)
        • 바이낸스(Binance) (1)
      • C++ 테트리스 게임 (1)
      • C++ (10)
      • 안드로이드 프로그래밍 (21)
        • 코틀린 (21)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    C
    dfs
    C++
    dp
    백트랙킹
    Kotlin
    코틀린
    코틀린을 활용한 안드로이드 프로그래밍
    알고리즘
    그리디
    시뮬레이션
    콘솔
    구현
    백준
    콘솔 테트리스 게임
    다이나믹 프로그래밍
    그래프
    자료구조
    BFS
    우선순위 큐
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
슥지니
[백준 5567번] 결혼식
상단으로

티스토리툴바