Pagini recente » Cod sursa (job #1879501) | Cod sursa (job #623875) | Cod sursa (job #1500621) | Cod sursa (job #2067736) | Cod sursa (job #136486)
Cod sursa(job #136486)
//Borland $#!@
#include <stdio.h>
#define MAXN 105
int N, M;
char m[MAXN][MAXN];
unsigned char d1[MAXN][MAXN], d2[MAXN][MAXN];
char qx[MAXN * MAXN], qy[MAXN * MAXN];
int q0;
const int dx[4] = {-1, 0, 1, 0};
const int dy[4] = {0, 1, 0, -1};
int Rx, Ry, Jx, Jy;
void bfs( int Sx, int Sy, unsigned char d[MAXN][MAXN] )
{
d[Sx][Sy] = 1;
q0 = 0; qx[0] = Sx; qy[0] = Sy;
for (int i = 0; i <= q0; i++)
{
int x = qx[i], y = qy[i];
for (int k = 0; k < 4; k++)
{
int _x = x + dx[k], _y = y + dy[k];
if (_x < 0 || _x >= N) continue;
if (_y < 0 || _y >= M) continue;
if (d[_x][_y] != 0 || m[_x][_y] == 'X') continue;
d[_x][_y] = d[x][y] + 1;
q0++; qx[q0] = _x; qy[q0] = _y;
}
}
}
int main()
{
//evident ca nu pot face 2 for (int i;...) fara sa faca scandal idiotu
int i, j;
freopen("rj.in", "rt", stdin);
freopen("rj.out", "wt", stdout);
scanf("%d %d ", &N, &M);
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
scanf("%c", m[i] + j);
if (m[i][j] == 'R')
Rx = i, Ry = j;
if (m[i][j] == 'J')
Jx = i, Jy = j;
}
scanf(" ");
}
bfs( Rx, Ry, d1 );
bfs( Jx, Jy, d2 );
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
if (d1[i][j] != 0 && d1[i][j] == d2[i][j])
{
printf("%d %d %d\n", d1[i][j] - 1, i + 1, j + 1);
return 0;
}
return 0;
}