Pagini recente » Cod sursa (job #1873507) | Cod sursa (job #2549825) | Cod sursa (job #2638316) | Cod sursa (job #2061166) | Cod sursa (job #2963431)
#include <bits/stdc++.h>
using namespace std;
const string file_name = "rj";
ifstream fin(file_name + ".in");
ofstream fout(file_name + ".out");
int n, m, ri, rj, ji, jj;
int ro[101][101], ju[101][101];
void debug(int mat[][101]){
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
cout << mat[i][j] << " ";
}
cout << "\n";
}
cout << "\n\n\n";
}
int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1},
dy[] = {0, 1, 1 ,1, 0, -1, -1, -1};
bool inmat(int i, int j){
return (i >= 1 && i <= n && j >= 1 && j <= m);
}
void lee(int x, int y, int ro[][101]){
queue <pair<int, int>> q;
q.push(make_pair(x, y));
while(!q.empty()){
int i = q.front().first;
int j = q.front().second;
for(int d = 0; d < 8; d++){
int in = i + dy[d],
jn = j + dx[d];
if(inmat(in, jn) && ro[in][jn] == 0){
ro[in][jn] = ro[i][j] + 1;
q.push(make_pair(in, jn));
}
}
q.pop();
}
ro[x][y] = 0;
}
int main(){
char arr[120];
fin >> n >> m;
fin.getline(arr, 1);
for(int i = 1; i <= n; i++){
fin.getline(arr, 100);
for(int j = 0; j < strlen(arr); j++){
if(arr[j] == 'X'){
ro[i][j+1] = -1;
ju[i][j+1] = -1;
}
else if(arr[j] == 'R'){
ri = i;
rj = j + 1;
}
else if(arr[j] == 'J'){
ji = i;
jj = j + 1;
}
}
}
lee(ri, rj, ro);
lee(ji, jj, ju);
int mini = 2e9, a = 0, b = 0;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(ro[i][j] < mini && ro[i][j] == ju[i][j] && ro[i][j] > 0){
mini = ro[i][j];
a = i;
b = j;
}
}
}
fout << mini + 1 << " " << a << " " << b;
return 0;
}