Pagini recente » Cod sursa (job #1578383) | Cod sursa (job #833274) | Cod sursa (job #241897) | Cod sursa (job #369115) | Cod sursa (job #97213)
Cod sursa(job #97213)
#include <stdio.h>
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;
}
}
scanf("\n");
}
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j) b[i][j]=100000;
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=0; 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 && (x!=rl || y!=rc))
{
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) d[i][j]=100000;
t=100000;
z=1;
a[1][0]=jl;
a[1][1]=jc;
d[jl][jc]=0;
for (i=1; i<=z; ++i)
{
for (j=0; 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' && d[x][y]>d[a[i][0]][a[i][1]]+1 && (x!=jl || y!=jc))
{
d[x][y]=d[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)
{
if (b[i][j]==d[i][j] && b[i][j]<t)
{
t=b[i][j];
pl=i;
pc=j;
}
}
}
printf("%d %d %d\n",t,pl,pc);
return 0;
}