Pagini recente » Cod sursa (job #1381086) | Cod sursa (job #746977) | Cod sursa (job #2587697) | Cod sursa (job #550435) | Cod sursa (job #2119351)
#include <fstream>
#include <cstring>
#define DIM 102
using namespace std;
int A[DIM][DIM], B[DIM][DIM], C[DIM][DIM], c[2][DIM * DIM];
int n, minim, iminim, jminim, m, i1, j1, i2, j2;
char s[DIM];
int di[] = {0, 0,1,-1,1,-1,-1, 1};
int dj[] = {1,-1,0, 0,1,-1, 1,-1};
void coada(int is, int js, int M[DIM][DIM]) {
int p = 1;
int u = 1;
c[0][u] = is;
c[1][u] = js;
M[is][js] = 1;
while (p <= u) {
int ic = c[0][p];
int jc = c[1][p];
for(int d = 0; d<8;d++) {
int iv = ic + di[d];
int jv = jc + dj[d];
if (iv>=1 && iv<=n && jv >= 1 && jv <= m && M[iv][jv] == 0 && A[iv][jv] == 0) {
u++;
c[0][u] = iv;
c[1][u] = jv;
M[iv][jv] = 1 + M[ic][jc];
}
}
p++;
}
}
ifstream fin ("rj.in");
ofstream fout("rj.out");
int main () {
fin>>n>>m;
for (int i=1;i<=n;i++) {
fin.get();
fin.get(s+1, DIM);
for (int j=1;j<=strlen(s+1);j++) {
if (s[j] == 0 || s[j] == ' ')
A[i][j] = 0;
if (s[j] == 'X')
A[i][j] = -1;
if (s[j] == 'R') {
i1 = i;
j1 = j;
A[i][j] = 0;
}
if (s[j] == 'J') {
i2 = i;
j2 = j;
A[i][j] = 0;
}
}
}
coada(i1, j1, B);
coada(i2, j2, C);
minim = DIM * DIM;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
if (B[i][j] > 0 && B[i][j] == C[i][j]) {
if (B[i][j] <minim) {
minim = B[i][j];
iminim = i;
jminim = j;
}
}
fout << minim <<" "<<iminim<<" "<<jminim;
return 0;
}