Pagini recente » Cod sursa (job #1884162) | Cod sursa (job #2950406) | Cod sursa (job #1785121) | Cod sursa (job #113028) | Cod sursa (job #567914)
Cod sursa(job #567914)
//sursa veche de pe .campion
#include <algorithm>
#define input "rj.in"
#define output "rj.out"
#define DIM 102
int a[DIM][DIM] ;
int b[DIM][DIM] ;
int coada[DIM*DIM][2] ;
int dx[]={0,0,1,-1,1,-1,1,-1} ;
int dy[]={-1,1,0,0,1,-1,-1,1} ;
int n , m ;
int cf1 ,cf2 ;
int inceput=1 ;
int xx , yy ;
int sfarsit=1 ;
int pas ;
char nr ;
void read()
{
scanf ("%d%d" , &n , &m ) ;
for (int i=1 ; i<=n ; i++)
{
scanf ("%c" , &nr) ;
for (int j=1 ; j<=m ; j++)
{
scanf ("%c" , &nr) ;
if (nr=='X')
{
a[i][j]=-1 ;
b[i][j]=-1 ;
}
else
{
if (nr=='R')
{
a[i][j]=1 ;
coada[1][0]=i ;
coada[1][1]=j ;
}
if (nr=='J')
{
b[i][j]=1 ;
cf1=i ;
cf2=j ;
}
}
}
}
}
void tipar(int a[DIM][DIM])
{
for (int i=0 ; i<=n+1 ; i++)
{
for (int j=0 ; j<=m+1 ; j++)
printf ("%d " ,a[i][j]) ;
printf ("\n") ;
}
printf ("\n") ;printf ("\n") ;printf ("\n") ;
}
void Lee(int a[DIM][DIM])
{
for (int i=0 ; i<=n+1 ; i++)
{
a[i][m+1]=-1 ;
a[i][0]=-1 ;
}
for (int i=0 ; i<=m+1 ; i++)
{
a[n+1][i]=-1 ;
a[0][i]=-1 ;
}
// tipar(a);
inceput=1;
while(inceput<=sfarsit)
{
pas=a[coada[inceput][0]][coada[inceput][1]]+1 ;
for (int k=0 ; k<=7 ; k++)
{
if (!a[coada[inceput][0]+dx[k]][coada[inceput][1]+dy[k]])
{
a[coada[inceput][0]+dx[k]][coada[inceput][1]+dy[k]]=pas ;
coada[++sfarsit][0]=coada[inceput][0]+dx[k] ;
coada[sfarsit][1]=coada[inceput][1]+dy[k] ;
}
}
inceput++ ;
}
}
void solve()
{
int min=DIM*DIM ;
for (int i=1 ; i<=n ; i++ )
{
for (int j=1 ; j<=m ; j++)
{
if (a[i][j]==b[i][j] && a[i][j]>0)
{
if (a[i][j]<min)
{
min=a[i][j] ;
xx=i ;
yy=j ;
}
}
}
}
printf ("%d %d %d" ,min , xx , yy) ;
}
int main()
{
freopen (input,"r",stdin) ;
freopen (output,"w",stdout) ;
read() ;
Lee(a) ;
// tipar(a);
sfarsit=1 ;
coada[sfarsit][0]=cf1 ;
coada[sfarsit][1]=cf2 ;
Lee(b) ;
// tipar(b) ;
solve() ;
return 0;
}