Pagini recente » Cod sursa (job #2963655) | Cod sursa (job #2854267) | Cod sursa (job #1899187) | Cod sursa (job #86657) | Cod sursa (job #122439)
Cod sursa(job #122439)
#include <stdio.h>
#include <string.h>
int main()
{
int aa,p,s,x1,y1,x2,y2,i,j,k,n,m;
char ss[101],c;
int a[101][101],matr[101][101],matj[101][101];
int d1[8]={-1,1,0,0,1,-1,-1,1};
int d2[8]={0,0,-1,1,1,1,-1,-1};
int lee[10001][2];
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d %d",&n,&m);
scanf("%c",&c);
for (i=1; i<=n; i++)
{
fgets(ss,m+2,stdin);
if (strlen(ss)-1<m) aa=strlen(ss)-1;
else aa=m;
for (j=0; j<=aa; j++)
{
if (ss[j]=='X') a[i][j+1]=1;
else
{
a[i][j+1]=0;
if (ss[j]=='R')
{
x1=i;
y1=j+1;
}
if (ss[j]=='J')
{
x2=i;
y2=j+1;
}
}
}
for (j=aa+1; j<=m; j++)
a[i][j+1]=0;
}
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
{
matr[i][j]=0;
matj[i][j]=0;
}
p=0;s=1;
lee[s][0]=x1;lee[s][1]=y1;matr[x1][y1]=1;
while (p<s)
{
p++;
for (i=0; i<=7; i++)
{
int h=lee[p][0]+d1[i];
int o=lee[p][1]+d2[i];
if (h>0 && h<=n && o>0 && o<=m && matr[h][o]==0 && a[h][o]==0)
{
s++;
lee[s][0]=h;
lee[s][1]=o;
matr[h][o]=matr[lee[p][0]][lee[p][1]]+1;
}
}
}
p=0;s=1;
lee[s][0]=x2;lee[s][1]=y2;matj[x2][y2]=1;
while (p<s)
{
p++;
for (i=0; i<=7; i++)
{
int h=lee[p][0]+d1[i];
int o=lee[p][1]+d2[i];
if (h>0 && h<=n && o>0 && o<=m && matj[h][o]==0 && a[h][o]==0)
{
s++;
lee[s][0]=h;
lee[s][1]=o;
matj[h][o]=matj[lee[p][0]][lee[p][1]]+1;
}
}
}
int min=32000;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
if (matr[i][j]==matj[i][j] && matr[i][j]!=0 && matr[i][j]<min)
min=matr[i][j];
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
if (matr[i][j]==matj[i][j] && matr[i][j]!=0 && matr[i][j]==min)
{
min=matr[i][j];
printf("%d %d %d\n",min,i,j);
return 0;
}
printf("-1\n");
return 0;
}