Pagini recente » Cod sursa (job #1666600) | Cod sursa (job #1598998) | Cod sursa (job #1725288) | Cod sursa (job #917197) | Cod sursa (job #1835782)
#include <iostream>
#include <fstream>
#include <queue>
#include <string>
#define x first
#define y second
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
string v;
int dx[]={0,-1,0,1,-1,1,1,-1,},dy[]={-1,0,1,0,1,1,-1,-1};
int n,m,x,y,a[101][101],fi,fj,p,is,js,timp;
queue <pair <int,int> > c;
int main()
{
in>>n>>m;
getline(in,v);
for(int i=0;i<n;++i)
{
getline(in,v);
for(int j=0;j<m;++j)
{
if(v[j]=='R')is=i+1,js=j+1;
if(v[j]=='J')fi=i+1,fj=j+1;
if(v[j]=='X')a[i+1][j+1]=-1;
}
}
a[is][js]=1;
c.push(make_pair(is,js));
while(!c.empty())
{
pair <int,int> fr=c.front();
c.pop();
int ii,jj;
for(int d=0;d<8;++d)
{
ii=fr.x+dx[d];
jj=fr.y+dy[d];
if(ii>0 && ii<=n && jj>0 && jj<=n && a[ii][jj]==0)
{
a[ii][jj]=a[fr.x][fr.y]+1;
c.push(make_pair(ii,jj));
}
}
}
out<<a[fi][fj]/2+1;
timp=a[fi][fj]/2+1;
while(a[fi][fj]!=timp)
{
int ii,jj,sem=1;
for(int d=0;d<8 && sem==1;++d)
{
ii=fi+dx[d];
jj=fj+dy[d];
if(ii>0 && ii<=n && jj>0 && jj<=n && a[ii][jj]==a[fi][fj]-1)
{
fi=ii;
fj=jj;
sem=0;
}
}
}
out<<" "<<fi<<" "<<fj;
return 0;
}