혼종 꼬지마루
[SWEA] 5521 - 상원이의 생일파티 본문
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 |