Pagini recente » Cod sursa (job #2526457) | Cod sursa (job #719053) | Cod sursa (job #2831992) | Cod sursa (job #74896) | Cod sursa (job #2403309)
#include <fstream>
#include <cmath>
#include <iostream>
#include <cstring>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int n,m,a[1005][1005],x,Map[1005][1005],p=1,u=1,nx,ny,i,i1=1,j,Min,cx,cy;
int dx[]={-1,0,1,1,0,-1,1,-1};
int dy[]={-1,-1,-1,0,1,0,1,1};
char s[101];
struct coada
{
int x,y;
}c[1000005] ;
void drum (int i,int j,int x)
{
for (int k=0;k<=7;k++)
if (Map[i+dx[k]][j+dy[k]]==x) {if (x==Map[cx][cy]/2+1) {g<<i+dx[k]<<" "<<j+dy[k];return;}
else
{drum(i+dx[k],j+dy[k],x-1); break;}
}
}
int main()
{
f>>n>>m;
f.get();
for (i=1;i<=n;i++)
{f.getline(s,101);
for (j=0;j<strlen(s);j++){
if (s[j]=='R') {a[i][j+1]=1; Map[i][j+1]=1; c[1].x=i; c[1].y=j+1;}
else if(s[j]=='J') {a[i][j+1]=1; cx=i; cy=j+1;}
else if (s[j]==' ') a[i][j+1]=1;}
}
while (p<=u && Map[cx][cy]%2==0)
{
nx=c[p].x;
ny=c[p].y;
for (i=0;i<=7;i++)
{
nx=c[p].x+dx[i];
ny=c[p].y+dy[i];
if (a[nx][ny]==1) {u++; Map[nx][ny]=Map[c[p].x][c[p].y]+1; c[u].x=nx; c[u].y=ny; a[nx][ny]=0;}
}
a[c[p].x][c[p].y]=0;
p++;
}
g<<Map[cx][cy]/2+1<<" ";
drum(cx,cy,Map[cx][cy]-1);
return 0;
}