[BOJ] 2178번: 미로 탐색
https://www.acmicpc.net/problem/2178 4방향으로 BFS를 돌면 된다. #include #include using namespace std; const int dx[] = {-1, 1, 0, 0}, dy[] = {0, 0, -1, 1}; int n, m; char a[102][102]; int vst[102][102]; struct ED { int x, y; ED(int x, int y) : x(x), y(y) {} }; int BFS(int x, int y) { queue q; q.push(ED(x, y)); vst[x][y] = 1; while (!q.empty()) { int xx = q.front().x, yy = q.front().y; q.pop(); if (xx ==..
2018. 8. 2.
[BOJ] 3055번: 탈출
3055번: 탈출 BFS로 풀 수 있다. 주의해야 할 점은 물이 흐르는 것을 계산할 때 임시 배열에 변경 사항을 저장했다가 실제 배열에 적용시켜줘야 물이 정상적으로 흐르는 것을 계산할 수 있다. 코드 #include #include #include using namespace std; int R, C; const int dx[] = {0, 0, 1, -1}, dy[] = {-1, 1, 0, 0}; char map[51][51]; bool visit[51][51]; pair D, S; inline bool safe(int y, int x) { return (0
2018. 7. 19.
[BOJ] 2589번: 보물섬
2589번: 보물섬 풀이 BFS로 맵을 다 돌아주면 된다. 최댓값을 찾아야 하기 때문에 시작점을 바꿔가면서 BFS 돌린다. 참고로 Max - 1을 결과로 출력해야 하는데 -1을 하는 이유는 visit_y_x= 1을 항상 하기 때문에 원하는 결과 값보다 항상 +1이 되기 때문이다. 코드 #include using namespace std; int w, h; char Map[51][51] = { 0, }; int BFS(int y, int x) { int MAX = 0; int visit[51][51] = { 0, }; const int dx[] = {0, -1, 1, 0}; const int dy[] = {-1, 0, 0, 1}; queue q; q.push(make_pair(y, x)); visit[y]..
2018. 7. 13.