Pagini recente » Cod sursa (job #1095309) | Cod sursa (job #399706) | Cod sursa (job #905163) | Cod sursa (job #581786) | Cod sursa (job #870597)
Cod sursa(job #870597)
#include<fstream>
#include<cstring>
using namespace std;
int n , m , A[100][100];
struct punct{
int x , y ;} c[10004] ;
int dx[]={ 0 , 1 , 1 , 1 , 0 , -1 , -1 , -1 };
int dy[]={ 1 , 1 , 0 , -1 , -1 , -1 , 0 , 1 };
int xa , ya , ok ;
int xc , yc , xv , yv ;
ifstream fin("rj.in");
ofstream fout("rj.out");
int p , u , k ;
int main(){
int i , j , po ;
char x[104] ;
fin >> n >> m;
for( i = 0 ; i <= n ; i++ ){
fin.getline( x+1 , 104 );
for( j = 1 ; j <= m ; j++ )
{
if( x[j] == 'X' )
A[i][j]=-1;
if( x[j] == 'R' )
{
A[i][j]=1;
c[1].x=i;
c[1].y=j;
}
if( x[j] == 'J' )
{
xa=i;
ya=j;
}
}
}
for( i = 0 ; i <= n+1 ; i++ )
A[0][i]=A[n+1][i]=A[i][0]=A[i][n+1]=-1;
p=u=1;
/*for( i = 1 ; i <= n ; i++ ){
fout << "\n";
for( j = 1 ; j <= m ; j++ )
fout << A[i][j];
}
fout<<"\n";*/
while( p <= u && !ok )
{
xc=c[p].x;
yc=c[p].y;
for( k = 0 ; k <= 8 ; k++ )
{
xv=xc+dx[k];
yv=yc+dy[k];
if( A[xv][yv] != -1 )
{
if( A[xv][yv] == 0 )
{
A[xv][yv]=A[xc][yc]+1;
u++;
c[u].x=xv;
c[u].y=yv;
}
else if( A[xv][yv] > A[xc][yc]+1 )
{
A[xv][yv]=A[xc][yc]+1;
u++;
c[u].x=xv;
c[u].y=yv;
}
}
if( xv == xa && yv == ya )
{
ok=1;
po=A[xv][yv]/2;
}
}
p++;
}
/* for( i = 1 ; i <= n ; i++ ){
fout << "\n";
for( j = 1 ; j <= m ; j++ )
fout << A[i][j];
}*/
ok=0;
for( i = 1 ; i <= n && !ok ; i++ )
for( j = 1 ; j <= n ; j++ )
if( A[i][j] == po+1 )
{
xa=i;
ya=j;
}
fout << po+1 << " " << xa << " " << ya;
return 0;
}