Pagini recente » Cod sursa (job #1694270) | Cod sursa (job #452435) | Cod sursa (job #1946506) | Cod sursa (job #1389322) | Cod sursa (job #1629343)
#include <iostream>
#include <fstream>
#include <queue>
#include <string.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int dx[]={0,0,1,1,1,-1,-1,-1};
int dy[]={1,-1,0,1,-1,0,1,-1};
int map[100][100],n,m,startx,starty,stopx,stopy,minx,miny;
queue < pair <int, int> > coada;
string s;
void citire()
{ int i,j;
fin>>n>>m;
fin.get();
for(i=1; i<=n; i++)
{ getline(fin,s);
for(j=0; j<s.size(); j++)
{ if(s[j]==' ')map[i][j+1]=0;
else if(s[j]=='X')map[i][j+1]=-1;
else if(s[j]=='R'){ startx=i;
starty=j+1;
}
else if(s[j]=='J'){ stopx=i;
stopy=j+1;
}
}
}
}
bool ok(int i,int j,map[][100])
{
return map[i][j]==0 && i>=1 && j>=1 && i<=n && j<=m;
}
void lee()
{
int i,j,i_urm,j_urm;
map[startx][starty]=1;
coada.push(make_pair(startx,starty));
while(!coada.empty())
{
i=coada.front().first;
j=coada.front().second;
coada.pop();
for(int d=0; d<8; d++) { i_urm=i+dx[d];
j_urm=j+dy[d];
if(ok(i_urm,j_urm)&&map[i_urm][j_urm]==0){ map[i_urm][j_urm]=1+map[i][j];
coada.push(make_pair(i_urm,j_urm));
}
}
}
}
int main()
{
citire();
lee();
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++) if(map[i][j]==map[stopx][stopy]/2+1) { if(miny==0)miny=j;
if(minx==0)minx=i;
else if(minx>i)minx=i;
else if(minx==i)if(miny>j)miny=j;
}
fout<<map[stopx][stopy]/2+1<<" "<<minx<<" "<<miny;
fin.close();
fout.close();
return 0;
}