Pagini recente » Cod sursa (job #2265771) | Cod sursa (job #2627062) | Cod sursa (job #772332) | Cod sursa (job #2646312) | Cod sursa (job #2698237)
#include <fstream>
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
#define nm_max 100
int n,m,rx,ry,jx,jy;
int mr[nm_max][nm_max],mj[nm_max][nm_max];
char sir[1000];
queue<int>qx,qy;
void read()
{
f>>n>>m;
char c;
f.get();
for (int i=1;i<=n;++i)
{
f.getline(sir,1000);
for (int j=1;j<=m;++j)
{
if (sir[j-1] == 'R')
{
rx = i;
ry = j;
}
else if (sir[j-1] == 'J')
{
jx = i;
jy = j;
}
else if (sir[j-1] == 'X')
{
mr[i][j] = mj[i][j] = -1;
}
}
}
}
void lee(int ix, int iy,int a[nm_max][nm_max])
{
a[ix][iy] = 1;
qx.push(ix);
qy.push(iy);
while (!qx.empty())
{
ix = qx.front();
iy = qy.front();
if (ix-1>0 && a[ix-1][iy] == 0)
{
qx.push(ix-1);
qy.push(iy);
a[ix-1][iy] = a[ix][iy]+1;
}
if (ix-1>0 && iy-1>0 && a[ix-1][iy-1] == 0)
{
qx.push(ix-1);
qy.push(iy-1);
a[ix-1][iy-1] = a[ix][iy]+1;
}
if (ix-1>0 && iy+1<=m && a[ix-1][iy+1] == 0)
{
qx.push(ix-1);
qy.push(iy+1);
a[ix-1][iy+1] = a[ix][iy]+1;
}
if (iy-1>0 && a[ix][iy-1] == 0)
{
qx.push(ix);
qy.push(iy-1);
a[ix][iy-1] = a[ix][iy]+1;
}
if (iy+1<=m && a[ix][iy+1] == 0)
{
qx.push(ix);
qy.push(iy+1);
a[ix][iy+1] = a[ix][iy]+1;
}
if (ix+1<=n && iy-1>0 && a[ix+1][iy-1] == 0)
{
qx.push(ix+1);
qy.push(iy-1);
a[ix+1][iy-1] = a[ix][iy]+1;
}
if (ix+1<=n && a[ix+1][iy] == 0)
{
qx.push(ix+1);
qy.push(iy);
a[ix+1][iy] = a[ix][iy]+1;
}
if (ix+1<=n && iy+1<=m && a[ix+1][iy+1] == 0)
{
qx.push(ix+1);
qy.push(iy+1);
a[ix+1][iy+1] = a[ix][iy]+1;
}
qx.pop();
qy.pop();
}
}
void out ()
{
int mi = 999999999;
int mix = 0, miy = 0;
for (int i=1;i<=n;++i)
for (int j=1;j<=m;++j)
if (mr[i][j] == mj[i][j] && mr[i][j]<mi && mr[i][j] > 0)
{
mi = mr[i][j];
mix = i;
miy = j;
}
g<<mi<<" "<<mix<<" "<<miy<<'\n';
}
void tester()
{
g<<'\n';
for (int i=1;i<=n;++i) {
for (int j=1;j<=m;++j)
g<<mr[i][j]<<" ";
g<<'\n';
}
g<<'\n';
for (int i=1;i<=n;++i) {
for (int j=1;j<=m;++j)
g<<mj[i][j]<<" ";
g<<'\n';
}
}
int main()
{
read();
lee(rx,ry,mr);
lee(jx,jy,mj);
out();
// tester();
return 0;
}