Pagini recente » Cod sursa (job #1284139) | Cod sursa (job #807784) | Cod sursa (job #559856) | Cod sursa (job #603598) | Cod sursa (job #2151189)
#include <fstream>
using namespace std;
ifstream fin ("rj.in");
ofstream fout ("rj.out");
char s[103];
int n, m, v[104][104], ri, rj, ji, jj, c1[2][10004], p1, u1, ic, jc, iv, jv, c2[2][10004], w[104][104], p2, u2, poz1 = 300, poz2 = 300, nr, sol, minim = 3000000;
int d1[] = {-1, 1, 0, 0, 1, -1, -1, 1};
int d2[] = {0, 0, -1, 1, 1, 1, -1, -1};
int main()
{
fin>>n>>m;
for(int i = 0; i <= n; i++){
fin.getline(s, 103);
for(int j = 0; j < m; j++){
if(s[j] == ' '){
v[i][j + 1] = 0;
w[i][j + 1] = 0;
}
if(s[j] == 'X'){
v[i][j + 1] = -1;
w[i][j + 1] = -1;
}
if(s[j] == 'R'){
v[i][j + 1] = 1;
ri = i;
rj = j + 1;
}
if(s[j] == 'J'){
w[i][j + 1] = 1;
ji = i;
jj = j + 1;
}
}
}
c1[0][1] = ri;
c1[1][1] = rj;
p1 = 1; u1 = 1;
while(p1 <= u1){
ic = c1[0][p1];
jc = c1[1][p1];
for(int d = 0; d <= 7; d++){
iv = ic + d1[d];
jv = jc + d2[d];
if(iv >= 1 && iv <= n && jv >= 1 && jv <= m && v[iv][jv] == 0){
u1++;
c1[0][u1] = iv;
c1[1][u1] = jv;
v[iv][jv] = 1 + v[ic][jc];
if(iv == ji && jv == jj){
p1 = u1 + 100;
}
}
}
p1++;
}
c2[0][1] = ji;
c2[1][1] = jj;
p2 = 1; u2 = 1;
while(p2 <= u2){
ic = c2[0][p2];
jc = c2[1][p2];
for(int d = 0; d <= 7; d++){
iv = ic + d1[d];
jv = jc + d2[d];
if(iv >= 1 && iv <= n && jv >= 1 && jv <= m && w[iv][jv] == 0){
u2++;
c2[0][u2] = iv;
c2[1][u2] = jv;
w[iv][jv] = 1 + w[ic][jc];
if(iv == ri && jv == rj){
p2 = u2 + 100;
}
}
}
p2++;
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(w[i][j] == v[i][j] && w[i][j] > 0){
if(minim > w[i][j]){
minim = w[i][j];
poz1 = i;
poz2 = j;
}
}
}
}
fout<<minim<<" "<<poz1<<" "<<poz2;
return 0;
}