Pagini recente » Cod sursa (job #1259704) | Cod sursa (job #2070099) | Cod sursa (job #2120208) | Cod sursa (job #2217650) | Cod sursa (job #2706941)
#include <fstream>
#include <cstring>
#include <vector>
#include <queue>
#define NMAX 110
#define N 1001
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
queue <int> Qx,Qy;
int n,m,rx,ry,jx,jy,matr[NMAX][NMAX],matj[NMAX][NMAX];
char s[1000];
void citire()
{
f>>n>>m;
char c;
f.get();
for (int i=1;i<=n;++i)
{
f.getline(s,1000);
for (int j=1;j<=m;++j)
{
if (s[j-1]=='R')
{
rx=i;
ry=j;
}
else if(s[j-1]=='J')
{
jx=i;
jy=j;
}
else if(s[j-1]=='X')
{
matr[i][j]=matj[i][j]=-1;
}
}
}
}
void lee(int ix,int iy,int a[NMAX][NMAX])
{
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 afisare()
{
int mi=999999999;
int mx=0,my=0;
for (int i=1;i<=n;++i)
for (int j=1;j<=m;++j)
if(matr[i][j]==matj[i][j] && matr[i][j]<mi && matr[i][j]>0)
{
mi=matr[i][j];
mx=i;
my=j;
}
g<<mi<<" "<<mx<<" "<<my<<'\n';
}
void verificare()
{
g<<'\n';
for (int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
g<<matr[i][j]<<" ";
g<<'\n';
}
g<<'\n';
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
g<<matj[i][j]<<" ";
g<<'\n';
}
}
int main()
{
citire();
lee(rx,ry,matr);
lee(jx,jy,matj);
afisare();
f.close();
g.close();
return 0;
}