Pagini recente » Cod sursa (job #2913585) | Cod sursa (job #1067851) | Cod sursa (job #2896970) | Cod sursa (job #812149) | Cod sursa (job #1087631)
#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[4] = { -1, 0, 0, 1 };
short int dc[4] = { 0, -1, 1, 0 };
short int R[102][102], J[102][102];
void LEE( short int v[][102] ) {
int first, last;
poz p, y;
first = last = 0;
while ( first <= last ) {
p = Q[first]; ++ first;
for ( int k = 0; k < 4; ++ k ) {
y.l = p.l + dl[k];
y.c = p.c + dc[k];
if ( v[y.l][y.c] == 0 ) {
Q[++last] = y;
v[y.l][y.c] = v[p.l][p.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-1<<' '<<p.l<<' '<<p.c<<'\n';
fin.close();
fout.close();
return 0;
}