https://www.acmicpc.net/problem/4963
가로, 세로 원래 잘 안보는데 진짜 잘 봐야한다는 걸 ㅠㅠㅠ 문제풀면서 깨달으면서도 안봄 ㅠㅠㅎ그흑
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 | #include<iostream> #include<cstring> using namespace std; int w; int h; int map[51][51]; int visited[51][51]; int dx[8] = { 0,0,1,-1,-1,-1,1,1}; int dy[8] = { 1,-1,0,0,-1,1,-1,1 }; void howmanylands(int _i,int _j) { visited[_i][_j] = 1; for (int i = 0; i < 8; i++) { int mx = _i + dx[i]; int my = _j + dy[i]; if (mx >= 0 && mx < h && my >= 0 && my < w && map[mx][my] == 1 && visited[mx][my] == 0) { howmanylands(mx, my); } } return; } int main(void) { while (1) { int land = 0; cin >> w >> h; if (!w && !h) break; memset(map, 0, sizeof(map)); memset(visited, 0, sizeof(visited)); for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { cin >> map[i][j]; } } for (int i = 0; i < h; i++) { for (int j = 0; j < w; j++) { if (map[i][j] && !visited[i][j]) { howmanylands(i, j); land++; } } } cout << land << '\n'; } return 0; } | cs |
'Problem > DFS' 카테고리의 다른 글
[백준알고리즘] 6603번 로또 (0) | 2018.12.03 |
---|---|
[백준알고리즘] 2583번 영역 구하기 (0) | 2018.11.26 |
[백준알고리즘] 2636번 치즈 (0) | 2018.11.18 |
[백준알고리즘] 2606번 바이러스 (0) | 2018.11.15 |
[백준알고리즘] 2667번 단지번호붙이기 (0) | 2018.11.05 |