Pagini recente » Cod sursa (job #1951956) | Cod sursa (job #3200217) | Cod sursa (job #2882664) | Rating Dutescu Cristian (crisvirus) | Cod sursa (job #2079758)
#include <fstream>
using namespace std;
int a[105][105],b[105][105];
int dx[10]={0,1,0,-1,-1,1,1,-1};
int dy[10]={1,0,-1,0,-1,1,-1,1};
struct elev
{
int l,c;
};
elev q[10205];
char marker[105][105],w;
ifstream f("rj.in");
ofstream g("rj.out");
int main()
{
int n=0,m=0,i=0,j=0,r1=0,r2=0,j1=0,j2=0,p=0,u=0,x=0,y=0,xx=0,yy=0,Min=0;
f>>n>>m;
for(i=1;i<=n;i++)
{
if(w!='\n')f.get();
for(j=1;j<=m;j++)
{
f.get(w);
if(w=='\n')
{
while(j<=m)
{
marker[i][j]=' ';
j++;
}
}
else
{
marker[i][j]=w;
if(marker[i][j]=='R')
{
r1=i;
r2=j;
}
else if(marker[i][j]=='J')
{
j1=i;
j2=j;
}
}
}
}
for(i=0;i<=n+1;i++)
{
marker[i][0]=marker[i][m+1]='X';
}
for(i=0;i<=m+1;i++)
{
marker[0][i]=marker[n+1][i]='X';
}
p=u=1;
q[1].l=r1;
q[1].c=r2;
a[r1][r2]=1;
while(p<=u)
{
x=q[p].l;
y=q[p].c;
for(i=0;i<8;i++)
{
xx=x+dx[i];
yy=y+dy[i];
if(marker[xx][yy]==' ' && a[xx][yy]==0)
{
u++;
q[u].l=xx;
q[u].c=yy;
a[xx][yy]=a[x][y]+1;
}
}
p++;
}
p=u=1;
q[1].l=j1;
q[1].c=j2;
b[j1][j2]=1;
while(p<=u)
{
x=q[p].l;
y=q[p].c;
for(i=0;i<8;i++)
{
xx=x+dx[i];
yy=y+dy[i];
if(marker[xx][yy]==' ' && b[xx][yy]==0)
{
u++;
q[u].l=xx;
q[u].c=yy;
b[xx][yy]=b[x][y]+1;
}
}
p++;
}
Min=10201;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(a[i][j]==b[i][j] && Min>a[i][j] && a[i][j]!=0)
{
Min=a[i][j];
x=i;
y=j;
}
}
}
g<<Min<<" "<<x<<" "<<y<<'\n';
return 0;
}