Pagini recente » Cod sursa (job #2387429) | Cod sursa (job #2081532) | Cod sursa (job #2700221) | Cod sursa (job #2562908) | Cod sursa (job #2288556)
#include <fstream>
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
const int nmax=105;
struct coada {
int x,y;
};
int dx[]= {-1,-1,0,1,1,1,0,-1};
int dy[]= {0,1,1,1,0,-1,-1,-1};
int mat[nmax][nmax];
void lee(int xo,int yo,int a[nmax][nmax]) {
int p,u,i;
coada temp,f,v[nmax*nmax+1];
p=u=1;
temp.x=xo;
temp.y=yo;
v[p]=temp;
a[temp.x][temp.y]=1;
while(p<=u) {
f=v[p];
p++;
for(i=0; i<8; i++) {
temp.x=f.x+dx[i];
temp.y=f.y+dy[i];
if(a[temp.x][temp.y]==0) {
a[temp.x][temp.y]=a[f.x][f.y]+1;
v[++u]=temp;
}
}
}
}
int main() {
int n,m,i,j;
in>>n>>m;
char cit;
int xr,yr,xj,yj;
in.get();
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++) {
cit=in.get();
if(cit=='X')
mat[i][j]=-1;
else if(cit=='R') {
xr=i;
yr=j;
} else if(cit=='J') {
xj=i;
yj=j;
}
}
in.get();
}
int R[nmax][nmax],J[nmax][nmax];
for(i=0; i<=n+1; i++)
R[i][0]=R[i][m+1]=J[i][0]=J[i][m+1]=-1;
for(i=0; i<=m+1; i++)
R[0][i]=R[n+1][i]=J[0][i]=J[n+1][i]=-1;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++){
if(mat[i][j]==-1)
R[i][j]=J[i][j]=-1;
else R[i][j]=J[i][j]=0;
}
lee(xr,yr,R);
lee(xj,yj,J);
int vmin=1000000,pozy,pozx;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
if(R[i][j]==J[i][j] and R[i][j]<vmin){
vmin=R[i][j];
pozx=i;
pozy=j;
}
}
out<<vmin<<" "<<pozx<<" "<<pozy;
return 0;
}