Pagini recente » Cod sursa (job #934313) | Cod sursa (job #875110) | Cod sursa (job #2799393) | Cod sursa (job #470799) | Cod sursa (job #332429)
Cod sursa(job #332429)
#include<iostream.h>
#include<stdio.h>
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
long n,m,i,j;
char a[100][100],b[100][100];
long d1[100][100],d[100][100];
long k,t=1,dl[10],dc[10],lv,cv,x,x1,x2,y1,y2;
scanf("%ld %ld\n",&n,&m);
for(i=1;i<=n;i++)
{
for(j=1;j<=m+1;j++)
{
scanf("%c",&a[i][j]);
b[i][j]=a[i][j];
if(a[i][j]=='R') { x1=i; y1=j;}
if(a[i][j]=='J') { x2=i; y2=j;}
d[i][j]=0;
d1[i][j]=0;
}
}
dl[1]=0; dc[1]=1;
dl[2]=1; dc[2]=0;
dl[3]=0; dc[3]=-1;
dl[4]=-1; dc[4]=0;
dl[5]=-1; dc[5]=-1;
dl[6]=1; dc[6]=1;
dl[7]=-1; dc[7]=1;
dl[8]=1; dc[8]=-1;
for(j=0 ; j<=m+1 ;j++)
{
a[0][j]='-1';
a[n+1][j]='-1';
b[0][j]='-1';
b[n+1][j]='-1';
}
for(i=0 ; i<=n+1 ;i++)
{
a[i][0]='-1';
a[i][m+1]='-1';
b[i][0]='-1';
b[i][m+1]='-1';
}
k=1;
d[x1][y1]=k;
do
{
t=0;
for(i=1 ;i<=n ;i++)
for(j=1 ; j<=m ; j++)
{
if(d[i][j]==k){
for(x=1 ;x<=8 ; x++)
{
lv=i+dl[x];
cv=j+dc[x];
if((d[lv][cv]==0)&&(a[lv][cv]==' '||a[lv][cv]=='J'))
{
d[lv][cv]=k+1;
t=1;
}
}
}
}
if(t) k=k+1;
}
while(t);
k=1;
t=1;
d1[x2][y2]=k;
do
{
t=0;
for(i=1 ;i<=n ;i++)
for(j=1 ; j<=m ; j++)
{
if(d1[i][j]==k){
for(x=1 ;x<=8 ; x++)
{
lv=i+dl[x];
cv=j+dc[x];
if((d1[lv][cv]==0)&&(b[lv][cv]==' '||b[lv][cv]=='R'))
{
d1[lv][cv]=k+1;
t=1;
}
}
}
}
if(t) k=k+1;
}
while(t);
k=10000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(d[i][j]==d1[i][j]&&d[i][j]<k&&d[i][j]!=0) { k=d[i][j]; x1=i; x2=j; }
printf("%ld %ld %ld\n",k,x1,x2);
return 0;
}