Pagini recente » Cod sursa (job #2495253) | Cod sursa (job #2681553) | Cod sursa (job #2110370) | Cod sursa (job #2770746) | Cod sursa (job #2906932)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
int v[102][102],o[102][102];
int n,m,minn;
void path1(int i, int j,int cnt){
if(v[i][j]==-2){
v[i][j]=cnt;
if(i>1) path1(i-1 , j , cnt+1);
if(i<n) path1(i+1 , j , cnt+1);
if(j>1) path1(i , j-1 , cnt+1);
if(j<m) path1(i , j+1 , cnt+1);
}
}
void path2(int i, int j,int cnt){
if(o[i][j]==-2){
o[i][j]=cnt;
if(i>1) path2(i-1 , j , cnt+1);
if(i<n) path2(i+1 , j , cnt+1);
if(j>1) path2(i , j-1 , cnt+1);
if(j<m) path2(i , j+1 , cnt+1);
}
}
char c[102];
int main()
{
struct {
int i;
int j;
}ju,ro,fin;
in>>n>>m;
in.getline(c,102);
for(int i=1;i<=n;i++){
in.getline(c,102);
for(int j=0;j<m;j++){
if(c[j]=='R') {
ro.i=i;
ro.j=j+1;
v[ro.i][ro.j]=-2;
o[ro.i][ro.j]=-1;
}
else if(c[j]=='J') {
ju.i=i;
ju.j=j+1;
v[ju.i][ju.j]=-1;
o[ju.i][ju.j]=-2;
}
else if(c[j]=='X'){
v[i][j+1]=-1;
o[i][j+1]=-1;
}
else if(c[j]==' '){
v[i][j+1]=-2;
o[i][j+1]=-2;
}
}
}
path1(ro.i , ro.j , 0);
path2(ju.i , ju.j , 0);
minn=10000;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(v[i][j]==o[i][j] && v[i][j]>=1){
if(v[i][j]<minn) {
minn=v[i][j];
fin.i=i;
fin.j=j;
}
}
}
}
out<<minn<<' ';
out<<fin.i<<' ';
out<<fin.j<<' ';
return 0;
}