Pagini recente » Cod sursa (job #1665240) | Cod sursa (job #65216) | Cod sursa (job #2125222) | Cod sursa (job #3166099) | Cod sursa (job #549806)
Cod sursa(job #549806)
#include <stdio.h>
#include <string.h>
#define lung 100
const int d[8][2]= { {-1,-1} , {-1,0} , {-1,1} , {0,-1} , {0,1} , {1,-1} , {1,0}, {1,1} };
struct coada
{int x,y;} c[lung*lung],ro,ju;
char s[lung+5];
int a[lung][lung],n,m,l;
int jul[lung][lung];
void Lee(int,int);
int main()
{
int i,j; char ch;
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%d%d\n",&n,&m);
for (i=0;i<n;i++)
{
gets(s);
for (j=0;j<m;j++)
{
if (s[j]=='X')
a[i][j]=jul[i][j]=-1;
else
a[i][j]=jul[i][j]=0;
if (s[j]=='R')
ro.x=i,ro.y=j;
if (s[j]=='J')
ju.x=i,ju.y=j;
}
}
Lee(ro.x,ro.y);
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
a[i][j]=jul[i][j];
if (jul[i][j]!=-1)
jul[i][j]=0;
}
Lee(ju.x,ju.y);
for (i=0;i<l;i++)
if ( a[ c[i].x ][ c[i].y]==jul[ c[i].x ][ c[i].y] )
break;
printf("%d %d %d\n",a[ c[i].x ][ c[i].y],c[i].x+1,c[i].y+1);
return 0;
}
void Lee(int a,int b)
{
int i,j;
l=1;
c[0].x=a;
c[0].y=b;
jul[a][b]=1;
for (i=0;i<l;i++)
for (j=0;j<8;j++)
{
int x=d[j][0]+c[i].x;
int y=d[j][1]+c[i].y;
if (x>=0 && x<n && y>=0 && y<m && !jul[x][y])
{
c[l].x=x,c[l].y=y; jul[x][y]=jul[ c[i].x ][ c[i].y ]+1;
l++;
}
}
}