Pagini recente » Bordura | Cod sursa (job #2183574) | Cod sursa (job #121336) | Cod sursa (job #2300876) | Cod sursa (job #1584846)
#include <fstream>
#include <iostream>
#include <queue>
#include <string>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
struct coord
{
int x,y;
}as;
int mat[100][100],m,n;
char x;
string a;
queue <coord> coada;
int di[4]={0,0,1,-1};
int dj[4]={-1,1,0,0};
void Read()
{
fin>>n>>m;
fin.ignore();
for (int i=0;i<n;i++) {
getline(fin,a);
for (int j=0;j<m;j++) {
if (a[j]=='X') mat[i][j]=-1;
else if (a[j]=='R' || a[j]=='J') {mat[i][j]=1;as.x=i,as.y=j;coada.push(as);}
else if (a[j]==' ') mat[i][j]=0;
}
}
}
void Lee()
{
int i,j,i_urm,j_urm;
while (!coada.empty()) {
i=coada.front().x;
j=coada.front().y;
coada.pop();
for (int x=0;x<4;x++) {
i_urm=i+di[x];
j_urm=j+dj[x];
if (mat[i_urm][j_urm]==0 && i_urm>=0 && j_urm>=0 && i_urm<n && j_urm<m) {
mat[i_urm][j_urm]=mat[i][j]+1;
as.x=i_urm;
as.y=j_urm;
coada.push(as);
}
else if (mat[i_urm][j_urm]==mat[i][j]+1 && i_urm>=0 && j_urm>=0 && i_urm<n && j_urm<m) {
as.x=i_urm;
as.y=j_urm;
return;
}
}
}
}
int main()
{
Read();
Lee();
fout<<mat[as.x][as.y]-1<<" "<<as.x+1<<" "<<as.y+1;
}