Pagini recente » Cod sursa (job #25564) | Cod sursa (job #1781674) | Cod sursa (job #2282643) | Cod sursa (job #2584079) | Cod sursa (job #153295)
Cod sursa(job #153295)
#include<fstream.h>
int r[102][102],f[102][102],n,xj,yj,xr,yr,m;
char a[102][102];
const int x[8]={-1,-1,-1,0,1,1,1,0};
const int y[8]={-1,0,1,1,1,0,-1,-1};
ifstream fin("rj.in");
ofstream fout("rj.out");
void citire(){
fin>>n>>m;
char c[105];
fin.getline (c,105);
for (int i=1;i<=n;i++){
fin.getline (c,105);
for (int j=0;j<m;j++){
a[i][j+1]=c[j];
if (c[j]=='R'){
xr=i;
yr=j+1;
a[i][j+1]=' ';
}
else
if (c[j]=='J'){
xj=i;
yj=j+1;
a[i][j+1]=' ';
}
}
}
}
void bordare(){
for(int i=0;i<=n+1;i++){
a[0][i]='X';
a[n+1][i]='X';
}
for(int i=0;i<=m+1;i++){
a[i][0]='X';
a[i][m+1]='X';
}
}
void lee(int b[102][102],int xb,int yb){
int x1[10000],y1[10000],nr=1;
x1[0]=xb;
y1[0]=yb;
b[xb][yb]=1;
for(int i=0;i<nr;i++)
for(int j=0;j<8;j++)
if(b[x1[i]+x[j]][y1[i]+y[j]]==0&&a[x1[i]+x[j]][y1[i]+y[j]]!='X'){
b[x1[i]+x[j]][y1[i]+y[j]]=b[x1[i]][y1[i]]+1;
x1[nr]=x1[i]+x[j];
y1[nr]=y1[i]+y[j];
nr++;
}
}
void minim(){
int min=10005,minl=10005,minc=10005;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(r[i][j]==f[i][j]&&r[i][j]!=0){
if(r[i][j]<min){
min=r[i][j];
minl=i;
minc=j;
}
if(r[i][j]==min&&minl>i){
minl=i;
minc=j;
}
if(r[i][j]==min&&minl==i&&minc>j){
minl=i;
minc=j;
}
}
fout<<min<<" "<<minl<<" "<<minc<<'\n';
}
void afisare(){
lee(f,xj,yj);
lee(r,xr,yr);
minim();
}
int main(){
citire();
bordare();
afisare();
fin.close();
fout.close();
return 0;
}