Pagini recente » Cod sursa (job #2639656) | Cod sursa (job #984416) | Cod sursa (job #979561) | Cod sursa (job #409776) | Cod sursa (job #966557)
Cod sursa(job #966557)
#include<fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int q[2][10000],i,j,n,m,a[103][103],min1=10000,xf,yf;
char c;
int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};
void lee()
{
int st,dr,x,y,xx,yy;
st=0;
dr=1;
while(st<=dr)
{
x=q[0][st];
y=q[1][st];
for(i=0;i<8;i++)
{
xx=x+dx[i];
yy=y+dy[i];
if(a[xx][yy]==0||a[xx][yy]>a[x][y]+1)
{
a[xx][yy]=a[x][y]+1;
dr++;
q[0][dr]=xx;
q[1][dr]=yy;
}
else if(a[xx][yy]==a[x][y]+1)
{
if(min1>a[x][y]+1) min1=a[x][y]+1,xf=xx,yf=yy;
a[xx][yy]=a[x][y]+1;
dr++;
q[0][dr]=xx;
q[1][dr]=yy;
}
}
st++;
}
}
int main ()
{
f>>n>>m;
f.get();
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
f.get(c);
if(c=='X') a[i][j]=-1;
else if(c=='R') a[i][j]=1,q[0][0]=i,q[1][0]=j;
else if(c=='J') a[i][j]=1,q[0][1]=i,q[1][1]=j;
else if(c==' ') a[i][j]=0;
}
f.get();
}
for(i=0;i<=n+1;i++) a[i][0]=a[i][n+1]=-1;
for(i=0;i<=m+1;i++) a[0][i]=a[m+1][i]=-1;
lee();
g<<min1<<" "<<xf<<" "<<yf;
}