tank
unknown
plain_text
2 years ago
1.3 kB
5
Indexable
#include <iostream> using namespace std; char Qx[100000]; char Qy[100000]; int Qd[100000]; int r = -1, f = -1; void Push(int x, int y, int d){ r++; Qx[r] = x; Qy[r] = y; Qd[r] = d; } void Pop(int &x, int &y, int &d){ f++; x = Qx[f]; y = Qy[f]; d = Qd[f]; } int dx[4] = {-1,0,0,1}; int dy[4] = {0,1,-1,0}; int BFS(int x, int y, int d){ Push(x,y, 0); while (r != f){ Pop(x,y,d); //check lan can for(int i = 0; i < 4; i++){ int xx = x + dx[i]; int yy = y + dy[i]; if(A[xx][yy] == 'E'){ Push(xx,yy,d+1); A[xx][yy] = 'S'; } else if(A[xx][yy] == 'B'){ Push(xx,yy,d+2); A[xx][yy] = 'S'; } else if(A[xx][yy] == 'T'){ return d+1; } } } } char A[400][400]; int main(){ freopen ("input.txt", "r", stdin); int T; cin >> T; for(int tc = 1; tc <= T; tc++){ int M, N; int yx, yy; cin >> M >> N; int d; //reset r = -1; f = -1; for(int i = 0; i <= M+1; i++){ for(int j = 0; j <= N+1; j++){ A[i][j] = 'B'; } } for(int i = 1; i <= M; i++){ cin >> A[i]; } for(int i = 1; i <= M; i++){ for(int j = 1; j <= N; j++){ if(A[i][j] == 'Y'){ yx = i; yy = j; } } } cout << "Case#" << tc << endl; cout << BFS(yx,yy,d) << endl; } return 0; }
Editor is loading...