Pagini recente » Cod sursa (job #1326581) | Cod sursa (job #1279311) | Cod sursa (job #1041938) | Cod sursa (job #1168305) | Cod sursa (job #1805889)
#include <bits/stdc++.h>
using namespace std;
char h[101][101];
int romeo[101][101];
int julieta[101][101];
int n, m;
struct abc{
int x, y;
} coada[100000];
void rezolvare(int a[101][101], int x, int y){
for (int i = 1; i <= n;i++)
for (int j = 1; j <= m; j++){
if (h[i][j] == 'X')
a[i][j] = -1;
if (h[i][j] == ' ' || h[i][j] =='R' || h[i][j] == 'J')
a[i][j] = -2;
}
a[x][y] = 1;
int p = 1;
int u = 0;
coada[1].x = x;
coada[1].y = y;
u++;
while (p <= u){
abc codita = coada[p];
p++;
for (int dx = -1; dx <= 1; dx++)
for (int dy = -1; dy <= 1; dy++)
if (a[codita.x + dx][codita.y + dy] == -2){
coada[++u].x = codita.x + dx;
coada[u].y = codita.y + dy;
a[codita.x + dx][codita.y + dy] = a[codita.x][codita.y] + 1;
}
}
}
int main()
{
ifstream fin ("rj.in");
ofstream fout ("rj.out");
fin >> n >> m;
fin.getline(h[0], m + 1);
for (int i = 1; i <= n; i++)
fin.getline(h[i] + 1, m + 1);
int rx, ry, jx, jy;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++){
if (h[i][j] == 'R'){
rx = i;
ry = j;
}
if (h[i][j] == 'J'){
jx = i;
jy = j;
}
}
rezolvare (romeo, rx, ry);
rezolvare (julieta, jx, jy);
int x, y, t = n * m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++){
if (romeo[i][j] == julieta[i][j] && romeo[i][j] > 0)
if (romeo[i][j] < t){
t = romeo[i][j];
x = i;
y = j;
}
}
fout << t << " " << x << " " << y << "\n";
return 0;
}