Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

혼종 꼬지마루

[SWEA] 5521 - 상원이의 생일파티 본문

Algorithms/BFS

[SWEA] 5521 - 상원이의 생일파티

꼬지마루 2018. 9. 7. 20:38

https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWWO3kT6F2oDFAV4

(문제가 될 시 삭제하도록 하겠습니다.)


D5이긴 한데 그렇게 어렵지는 않았던문제... 그냥 문제를 잘 못 이해해서 좀 뻘짓했음


게다가 BFS라기도 뭐하고...시뮬레이션에 BFS조금 섞은 느낌


1. 상원이의 친구를 일단 큐에 넣으며 초대장을 나눠주는 갯수를 센다.


2. 큐에서 하나씩 빼며 그 친구의 친구를 중복되지 않도록 초대장을 나눠준다.


   이때 큐에 다시 집어넣지 않도록 조심!


3. 초대장을 나눠준 갯수를 리턴


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
#include <iostream>
#include <cstdio>
#include <memory.h>
#define SIZE 503
using namespace std;
 
int map[SIZE][SIZE], q[SIZE], check[SIZE];
int T, N, M;
 
int bfs()
{
    int st, ed, dab = 0, ifd;
    st = ed = -1;
    for (int i = 1; i <= map[1][0]; i++)
    {
        q[++st] = map[1][i]; check[map[1][i]] = 1; dab++;
    }
    while (st != ed)
    {
        ifd = q[++ed];
        for (int i = 1; i <= map[ifd][0]; i++)
        {
            if (check[map[ifd][i]]) continue;
            check[map[ifd][i]] = 1; dab++;
        }
    }
    return dab;
}
 
int main(void)
{
    cin >> T;
    for (int tc = 1; tc <= T; tc++)
    {
        cin >> N >> M;
        for (int i = 0; i <= N; i++)
            check[i] = map[i][0= 0;
        for (int i = 0; i < M; i++)
        {
            int a, b;
            scanf("%d %d"&a, &b);
            map[a][++map[a][0]] = b; map[b][++map[b][0]] = a;
        }
        check[1= 1;
        printf("#%d %d\n", tc, bfs());
    }
    return 0;
}
cs

 

'Algorithms > BFS' 카테고리의 다른 글

[백준] 16236 - 아기 상어  (0) 2018.11.08
[백준] 2667 - 단지번호 붙이기  (0) 2018.10.17
[SWEA] 1267 - 작업순서  (0) 2018.09.03
[백준] 1938 - 통나무 옮기기  (0) 2018.08.30
[백준] 5022 - 연결  (0) 2018.08.30