Pagini recente » Cod sursa (job #1565980) | Cod sursa (job #1736870) | Cod sursa (job #2578321) | Cod sursa (job #1133736) | Cod sursa (job #1325348)
#include <fstream>
#define DIM 102
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
const int di[]={1,0,-1,0,1,1,-1,-1},dj[]={0,1,0,-1,1,-1,1,-1};
struct coada {short x,y;}C[DIM*DIM];
char s[DIM][DIM];
int a[DIM][DIM],N,M,b[DIM][DIM],L1,C1,L2,C2,P,U;
int main(){
fin>>N>>M;
fin.get();
for(int i=1;i<=N;i++){
fin.getline(s[i]+1,'\n');
for(int j=1;j<=M;j++){
if(s[i][j]=='R'){
L1=i;
C1=j;
}
if(s[i][j]=='J'){
L2=i;
C2=j;
}
}
}
C[1].x=L1;
C[1].y=C1;
P=U=1;
a[L1][C1]=1;
while(P<=U){
coada c=C[P++];
coada k;
for(int i=0;i<4;i++){
k.x=c.x+di[i];
k.y=c.y+dj[i];
if(k.x>=1 && k.x<=N && k.y>=1 && k.y<=M && (s[k.x][k.y]==' ' || s[k.x][k.y]=='0') && a[k.x][k.y]==0){
C[++U]=k;
a[k.x][k.y]=a[c.x][c.y]+1;
}
}
}
C[1].x=L2;
C[1].y=C2;
P=U=1;
b[L2][C2]=1;
while(P<=U){
coada c=C[P++];
coada k;
for(int i=0;i<4;i++){
k.x=c.x+di[i];
k.y=c.y+dj[i];
if(k.x>=1 && k.x<=N && k.y>=1 && k.y<=M && (s[k.x][k.y]==' ' || s[k.x][k.y]=='0') && b[k.x][k.y]==0){
C[++U]=k;
b[k.x][k.y]=b[c.x][c.y]+1;
}
}
}
int minim=0x3f3f3f3f,lmin,cmin;
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
if(a[i][j] && b[i][j] && max(a[i][j],b[i][j])<minim)
minim=max(a[i][j],b[i][j]),lmin=i,cmin=j;
fout<<minim-1<<" "<<lmin<<" "<<cmin;
fin.close();fout.close();
return 0;
}