Pagini recente » Cod sursa (job #2589520) | Cod sursa (job #940440) | Cod sursa (job #325490) | Cod sursa (job #1446915) | Cod sursa (job #2832388)
#include <iostream>
#include <algorithm>
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int nrl,nrc,linr,colr,linj,colj;
int dl[8]={0,1,0,-1,-1,1,-1,1};
int dc[8]={1,0,-1,0,-1,1,1,-1};
const int NMAX=102;
queue<pair<int, int>> q;
char a[NMAX][NMAX];
int matr[NMAX][NMAX];
int matj[NMAX][NMAX];
void citire()
{
char c[NMAX];
fin>>nrl>>nrc;
for (int i=0;i<=nrl+1;i++)
a[i][0]=a[i][nrc+1] = 'X';
for (int i=0;i<=nrc+1;i++)
a[0][i]=a[nrl+1][i]='X';
fin.get();
for (int i=1;i<=nrl;i++)
{
fin.get(c,NMAX);
for (int j=1;j<=nrc;j++)
{
a[i][j]=c[j - 1];
if (a[i][j]=='R')
{
linr=i;
colr=j;
a[i][j]=' ';
}
if (a[i][j]=='J')
{
linj=i;
colj=j;
a[i][j]= ' ';
}
}
fin.get();
}
}
void lee(int lin0, int col0, int matrice[NMAX][NMAX])
{
int i,j,x,y;
for(i=0;i<=nrl+1;i++)
for(j=0;j<=nrc+1;j++)
matrice[i][j]=0;
matrice[lin0][col0]=1;
q.push(make_pair(lin0,col0));
matrice[lin0][col0]=1;
while(!q.empty())
{
x=q.front().first;
y=q.front().second;
q.pop();
for(i=0;i<8;i++)
if(a[x+dl[i]][y+dc[i]]==' ' && matrice[x+dl[i]][y+dc[i]]==0)
{
matrice[x+dl[i]][y+dc[i]]=1+matrice[x][y];
q.push(make_pair(x+dl[i],y+dc[i]));
}
}
}
void afisare()
{
int i,j,xmin=-1,ymin=-1,tmin;
tmin = NMAX * NMAX;
for(i=1;i<=nrl;i++)
for(j=1;j<=nrc;j++)
if(matr[i][j]==matj[i][j])
if(matr[i][j]<tmin && matr[i][j]!= 0)
{
tmin=matr[i][j];
xmin=i;
ymin=j;
}
fout<<tmin<<" "<<xmin<<" "<<ymin;
}
int main()
{
citire();
lee(linr,colr,matr);
lee(linj,colj,matj);
afisare();
return 0;
}