#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; struct pole { bool b,y,r,g,ok; }; int dx[] = { 0,0,-1,1 }; int dy[] = { -1,1,0,0 }; int main() { pole M[102][102],MP[102][102]; for(int i=0;i<102;i++) for(int j=0;j<102;j++) { M[i][j].b = false; M[i][j].y = false; M[i][j].r = false; M[i][j].g = false; M[i][j].ok = false; MP[i][j].b = false; MP[i][j].y = false; MP[i][j].r = false; MP[i][j].g = false; MP[i][j].ok = false; } int n,m; cin >> n >> m; while( n != 0 && m != 0) { for(int i=0;i N(n); for(int i = 0;i < n;i++) cin >> N[i]; for(int i = 0;i= 0 && i+dx[z] < n && j+dy[z] >= 0 && j + dy[z] < m) { if( N[i+dx[z]][j+dy[z]] != '#' && !( N[i+dx[z]][j+dy[z]] == 'B' && !M[i][j].b ) && !( N[i+dx[z]][j+dy[z]] == 'Y' && !M[i][j].y ) && !( N[i+dx[z]][j+dy[z]] == 'R' && !M[i][j].r ) && !( N[i+dx[z]][j+dy[z]] == 'G' && !M[i][j].g ) ) { MP[i+dx[z]][j+dy[z]].ok = true; MP[i+dx[z]][j+dy[z]].b = M[i][j].b || MP[i+dx[z]][j+dy[z]].b; MP[i+dx[z]][j+dy[z]].y = M[i][j].y || MP[i+dx[z]][j+dy[z]].y; MP[i+dx[z]][j+dy[z]].r = M[i][j].r || MP[i+dx[z]][j+dy[z]].r; MP[i+dx[z]][j+dy[z]].g = M[i][j].g || MP[i+dx[z]][j+dy[z]].g; } } } } } } bool spr = false; for(int i = 0;i max(n,m)*6 ) { cout << "The poor student is trapped!" << endl; } cin >> n >> m; } return 0; }