Pagini recente » Cod sursa (job #2072657) | Cod sursa (job #2722366) | Cod sursa (job #2221225) | Cod sursa (job #105424) | Cod sursa (job #704069)
Cod sursa(job #704069)
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int N, M, hr[101][101], hj[101][101],
dx[] = {0, 1, 1, 1, 0, -1, -1, -1}, dy[] = {1, 1, 0, -1, -1, -1, 0, 1};
struct pos { int x, y; };
void lee (int h[101][101], int x, int y) {
int lc = 1;
pos c[101];
c[1].x = x;
c[1].y = y;
while (lc != 0) {
pos t = {c[lc].x, c[lc].y}, p;
lc--;
for (int i = 0; i < 8; i++) {
p.x = t.x + dx[i];
p.y = t.y + dy[i];
if (h[p.x][p.y] == 0) {
lc++;
c[lc].x = p.x;
c[lc].y = p.y;
h[p.x][p.y] = h[t.x][t.y] + 1;
}
}
}
}
int main () {
char c;
int xr, yr, xj, yj;
fin >> N >> M;
fin.get(c);
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= M; j++) {
fin.get(c);
if (c == 'R') {
xr = i;
yr = j;
hr[i][j] = 1;
hj[i][j] = 0;
} else if (c == 'J') {
xj = i;
yj = j;
hr[i][j] = 0;
hj[i][j] = 1;
} else if (c == 'X') {
hr[i][j] = hj[i][j] = -1;
} else if (c == ' ') {
hr[i][j] = hj[i][j] = 0;
}
}
fin.get(c);
}
for (int i = 0; i <= N + 1; i++) {
hr[i][0] = hr[i][M + 1] = hj[i][0] = hj[i][M + 1] = -1;
}
for (int i = 0; i <= M + 1; i++) {
hr[0][i] = hr[N + 1][i] = hj[0][i] = hj[N + 1][i] = -1;
}
lee(hr, xr, yr);
lee(hj, xj, yj);
int d = N * N, xf, yf;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= M; j++) {
if (hr[i][j] == hj[i][j] && 0 < hr[i][j] && hr[i][j] < d) {
d = hr[i][j];
xf = i;
yf = j;
}
}
}
fout << d << ' ' << xf << ' ' << yf << ' ' << '\n';
return 0;
}