티스토리 뷰
[소스 코드]
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | #include <iostream> #include <queue> #include <algorithm> using namespace std; #define MAX 100 int N, M, K; int map[MAX][MAX]; int num[MAX]; bool visited[MAX][MAX]; int dir[4][2] = { {0,1}, {0,-1}, {1,0}, {-1,0} }; typedef struct _node { int row; int col; int cnt; }Node; void SetMap(Node leftDown, Node rightUp) { for (int i = rightUp.row; i < leftDown.row; i++) { for (int j = leftDown.col; j < rightUp.col; j++) { map[i][j] = -1; } } } bool isBoundary(int row, int col) { return (row >= 0 && row < M) && (col >= 0 && col < N); } void Solve(int r, int c, int cc) { queue<Node> q; q.push(Node{ r, c }); visited[r][c] = true; map[r][c] = cc; num[cc] += 1; while (!q.empty()) { Node node = q.front(); q.pop(); int row = node.row; int col = node.col; int cnt = node.cnt; for (int i = 0; i < 4; i++) { int nr = row + dir[i][0]; int nc = col + dir[i][1]; if (isBoundary(nr, nc) && !visited[nr][nc] && map[nr][nc] != -1) { visited[nr][nc] = true; map[nr][nc] = cnt; num[cc] += 1; q.push(Node{ nr,nc,cnt }); } } } } int main(void) { cin >> M >> N >> K; for (int i = 0; i < K; i++) { int lr, lc, rr, rc; cin >> lr >> lc >> rr >> rc; Node leftDown = Node{ M - lc, lr,0 }; Node rightDown = Node{ M - rc, rr,0 }; SetMap(leftDown, rightDown); } int ans = 1; for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { if (map[i][j] != -1 && !visited[i][j]) { Solve(i, j, ans); ans += 1; } } } cout << ans - 1 << endl; sort(num+1, num + ans); for (int i = 1; i <= ans - 1; i++) { cout << num[i] << " "; } cout << endl; return 0; } | cs |
'알고리즘 문제 > 백준(BOJ)' 카테고리의 다른 글
[백준 16236번] 아기상어 :: 늦깎이 IT (0) | 2019.03.06 |
---|---|
[백준 16235번] 나무 재테크 :: 늦깎이 IT (0) | 2019.03.05 |
[백준 1012번] 유기농 배추 (C, C++) (0) | 2019.02.17 |
[백준 2206번] 벽 부수고 이동하기_JAVA (0) | 2019.02.15 |
[백준 1194번] 달이 차오른다, 가자._JAVA (1) | 2019.02.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 알고리즘
- 자바
- 구슬 탈출2
- 힙정렬
- 영역 구하기
- 14888
- 구현
- 리스트
- 삼성
- 알고스팟
- 나무 재테크
- 최소힙
- 최대힙
- 배열
- 트리
- 우선순위 큐
- 탐색
- BFS
- 중간값
- 브루트포스
- 힙
- SWEA
- DFS
- 백준
- 정렬
- 연산자 끼워넣기
- 탈주범 검거
- 큐
- 시뮬레이션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함