Pagini recente » Cod sursa (job #2755162) | Cod sursa (job #2756122) | Cod sursa (job #1527934) | Cod sursa (job #3232736) | Cod sursa (job #1807361)
#include <fstream>
#include <cstring>
using namespace std;
struct poz
{
int x, y;
} coada[10205], ri, ji, el;
const int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1}, dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
int n, m, prim, ultim, R[101][101], J[101][101], Min = 99999999, xMin, yMin;
void Lee(int x, int y, int a[][101])
{
prim = 1; ultim = 0;
coada[++ultim].x = x; coada[ultim].y = y;
while(prim <= ultim)
{
el = coada[prim++];
for(int i = 0; i < 8; ++i)
if(el.x+dx[i] > 0 && el.x+dx[i] <= n && el.y+dy[i] > 0 && el.y+dy[i] <= m)
if(!a[el.x+dx[i]][el.y+dy[i]])
{
a[el.x+dx[i]][el.y+dy[i]] = a[el.x][el.y] + 1;
coada[++ultim].x = el.x + dx[i]; coada[ultim].y = el.y + dy[i];
}
}
}
int main()
{
char c[256];
ifstream fin ("rj.in");
fin >> n >> m;
fin.get();
for(int i = 1; i <= n; ++i)
{
fin.getline(c+1, 256);
for(int j = 1; j <= m; ++j)
{
if(c[j] == 'X') R[i][j] = -1, J[i][j] = -1;
else if(c[j] == 'R') ri.x = i, ri.y = j, R[i][j] = 1;
else if(c[j] == 'J') ji.x = i, ji.y = j, J[i][j] = 1;
}
}
fin.close();
Lee(ri.x, ri.y, R);
Lee(ji.x, ji.y, J);
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= m; ++j)
if(R[i][j] == J[i][j] && R[i][j] < Min && R[i][j] > 0)
{
Min = R[i][j];
xMin = i;
yMin = j;
}
ofstream fout("rj.out");
fout << Min << " " << xMin << " " << yMin << " ";
fout.close();
return 0;
}