https://www.acmicpc.net/problem/2589
다른거 하기 싫어서 코딩문제 풀었다..
왤케 딴 거 하기 있을 때에는 문제 풀고 싶고 없을 때에는 문제가 안풀고 싶을까? ㅎ...
ㅠㅠ나는 너무 성급하게 코드를 제출해서 한 번에 성공을 잘 못하는 것 같다.. 충분히 생각해보고 제출하는 연습을 해야겠답.
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 | #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<iostream> #include<queue> using namespace std; int v[51][51] = { 0 }; int visited[51][51] = { 0 }; int dx[4] = { 0,0,-1,1 }; int dy[4] = { 1,-1,0,0 }; queue <pair<int, int>> q; int main(void) { int M, N; int max_count = 0; int count = 0; char path[50] = { 0 }; scanf("%d %d", &M, &N); for (int i = 0; i < M; i++) { scanf("%s", path); for (int j = 0; j < N; j++) { v[i][j] = *(path + j); } } for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { if (v[i][j] == 'L') { visited[i][j] = 1; q.push(make_pair(i, j)); while (!q.empty()) { int size = q.size(); while (size--) { int x = q.front().first; int y = q.front().second; q.pop(); for (int k = 0; k < 4; k++) { int mx = x + dx[k]; int my = y + dy[k]; if (mx >= 0 && mx < M && my >= 0 && my < N && v[mx][my] == 'L' && visited[mx][my] == 0) { visited[mx][my] = 1; q.push(make_pair(mx, my)); } } } count++; } if (max_count < count) max_count = count; count = 0; } memset(visited, 0, sizeof(visited)); } } printf("%d", max_count-1); return 0; } | cs |
'Problem > BFS' 카테고리의 다른 글
[백준알고리즘] 2644번 촌수계산 (0) | 2018.11.20 |
---|---|
[백준알고리즘] 7569번 토마토 (0) | 2018.11.11 |
[백준알고리즘] 1967번 숨바꼭질 (0) | 2018.11.10 |
[백준알고리즘] 2178번 미로탐색 (0) | 2018.10.30 |
[백준알고리즘] 7576번 토마토 (0) | 2018.10.29 |