Pagini recente » Cod sursa (job #1902726) | Cod sursa (job #523295) | Cod sursa (job #863723) | Cod sursa (job #3041103) | Cod sursa (job #1088307)
#include<fstream>
using namespace std;
ifstream fin( "rj.in" );
ofstream fout( "rj.out" );
struct poz{ short int l, c; };
poz Q[10000];
short int dl[8] = { -1, -1, -1, 0, 0, 1, 1, 1 };
short int dc[8] = { -1, 0 , 1, -1, 1, -1, 0, 1 };
short int R[102][102], J[102][102];
void LEE( short int a[][102] ) {
int first, last;
poz p, y;
first = last = 0;
while ( first <= last ) {
poz acum, v;
acum = Q[first++];
for ( short int k = 0; k < 8; ++ k ) {
v.l = acum.l + dl[k];
v.c = acum.c + dc[k];
if ( a[v.l][v.c] == 0 ) {
Q[++last] = v;
a[v.l][v.c] = a[acum.l][acum.c] + 1;
}
}
}
}
int main()
{
int n, m;
poz d;
char c;
fin>>n>>m;
fin.get();
for ( int i = 0; i <= n+1; ++ i )
R[i][0] = R[i][m+1] = J[i][0] = J[i][m+1] = -1;
for ( int i = 0; i <= m+1; ++ i )
R[0][i] = R[n+1][i] = J[0][i] = J[n+1][i] = -1;
for ( int i = 1; i <= n; ++ i ) {
for ( int j = 1; j <= m; ++ j ) {
fin.get(c);
if ( c == 'R' ) {
Q[0].l = i;
Q[0].c = j;
R[i][j] = 1;
} else if ( c == 'J' ) {
d.l = i;
d.c = j;
J[i][j] = 1;
} else if ( c == 'X' )
R[i][j] = J[i][j] = -1;
}
fin.get();
}
LEE( R );
Q[0] = d;
LEE( J );
short int mn;
poz p;
mn = 1001;
for ( int i = 1; i <= n; ++ i )
for ( int j = 1; j <= m; ++ j )
if ( R[i][j] == J[i][j] && R[i][j] < mn && R[i][j] > 0 ){
p.l = i;
p.c = j;
mn = R[i][j];
}
fout<<mn<<' '<<p.l<<' '<<p.c<<'\n';
fin.close();
fout.close();
return 0;
}