Pagini recente » Cod sursa (job #1316570) | Cod sursa (job #1030896) | Cod sursa (job #653549) | Cod sursa (job #1203899) | Cod sursa (job #96967)
Cod sursa(job #96967)
#include <stdio.h>
#define max(a,b) (a)>(b)?a:b
const int dx[4]= {1, 0 , -1 , 0};
const int dy[4]= {0, 1 , 0 , -1};
int a[10010][2],b[110][110],d[110][110],n,m,rl,rc,jl,jc,z,t,pl,pc;
char c[110][110];
int main()
{
freopen("rj.in","rt",stdin);
freopen("rj.out","wt",stdout);
scanf("%d %d\n",&n,&m);
int i,j;
for (i=1; i<=n; ++i)
{
for (j=1; j<=m; ++j)
{
scanf("%c",&c[i][j]);
if (c[i][j]=='R')
{
rl=i;
rc=j;
}
if (c[i][j]=='J')
{
jl=i;
jc=j;
}
}
}
int x,y;
z=1;
a[1][0]=rl;
a[1][1]=rc;
b[rl][rc]=0;
for (i=1; i<=z; ++i)
{
for (j=1; j<=4; ++j)
{
x=a[i][0]+dx[j];
y=a[i][1]+dy[j];
if (x>0 && x<=n && y>0 && y<=m && c[x][y]!='X')
{
b[x][y]=b[a[i][0]][a[i][1]]+1;
++z;
a[z][0]=x;
a[z][1]=y;
}
}
}
for (i=1; i<=n; ++i)
{
for (j=1; j<=m; ++j) printf("%d ",b[i][j]);
printf("\n");
}
t=0x3f3f3f3f;
z=1;
a[1][0]=jl;
a[1][1]=jc;
d[jl][jc]=0;
for (i=1; i<=z; ++i)
{
for (j=1; j<=4; ++j)
{
x=a[i][0]+dx[j];
y=a[i][1]+dy[j];
if (x>0 && x<=n && y>0 && y<=m && c[x][y]!='X')
{
if (max(d[x][y],b[x][y])<t)
{
t=max(d[x][y],d[x][y]);
pl=x;
pc=y;
}
d[x][y]=b[a[i][0]][a[i][1]]+1;
}
}
}
printf("%d %d %d",t,pl,pc);
return 0;
}