#include #include #include #include using namespace std; int dx[] = {-1, 1, 0, 0, -1, -1, 1, 1}; int dy[] = {0, 0, -1, 1, -1, 1, -1, 1}; char mat[102][102], rX, rY, jX, jY; int n, m; void lee(int startX, int startY, int dist[102][102]) { for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) dist[i][j] = -1; queue > q; q.push({startX, startY}); dist[startX][startY] = 1; while(q.empty() == false) { pair p = q.front(); q.pop(); for(int d = 0; d < 8; d++) { int newX = p.first + dx[d]; int newY = p.second + dy[d]; if(newX >= 1 && newY >= 1 && newX <= n && newY <= m && mat[newX][newY] != 'X' && dist[newX][newY] == -1) { dist[newX][newY] = dist[p.first][p.second] + 1; q.push({newX, newY}); } } } } int romeo[102][102], julieta[102][102]; int main() { ifstream in("rj.in"); ofstream out("rj.out"); in >> n >> m; for(int i = 1; i <= n; ++i) { in.get(); in.get(mat[i]+1, m+1, '\n'); } for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) { if(mat[i][j] == 'R') { rX = i; rY = j; } else if(mat[i][j] == 'J') { jX = i; jY = j; } } lee(rX, rY, romeo); lee(jX, jY, julieta); int tmin = n*m, x, y; for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) { if(romeo[i][j] != -1 && romeo[i][j] == julieta[i][j] && romeo[i][j] < tmin) { tmin = romeo[i][j]; x = i; y = j; } } out << tmin << " " << x << " " << y; return 0; }