Pagini recente » Cod sursa (job #121925) | Cod sursa (job #2903732) | Cod sursa (job #1731090) | Cod sursa (job #2751168) | Cod sursa (job #356032)
Cod sursa(job #356032)
#include<fstream.h>
int main(){
int n,m,i,j,a[100][100],x1,x2,y1,y2,p,u,b[100][100],l,c,l1,c1,dx[8]={-1,-1,-1,0,1,1,1,0},dy[8]={-1,0,1,1,1,0,-1,-1},d[100][100],min;
char x;
ifstream f("rj.in");
ofstream g("rj.out");
int C[2][10001];
char s[101];
f>>n>>m;
for (i=1;i<=n;i++){
f.get();
for (j=1;j<=m;j++){
x=f.get();
if (x=='X')
a[i][j]=1;
if (x=='R'){
x1=i;
y1=j;
}
if (x=='J'){
x2=i;
y2=j;
}
}
}
p=u=1;
C[0][u]=x1;
C[1][u]=y1;
b[x1][y1]=1;
while(p<=u){
l=C[0][p];
c=C[1][p];
for (i=0;i<=7;i++){
l1=l+dx[i];
c1=c+dy[i];
if (a[l1][c1]==0&&b[l1][c1]==0&&l1>=1&&l1<=n&&c1>=1&&c1<=m){
u++;
C[0][u]=l1;
C[1][u]=c1;
b[l1][c1]=b[l][c]+1;
}
}
p++;
}
p=u=1;
C[0][u]=x2;
C[1][u]=y2;
d[x2][y2]=1;
while(p<=u){
l=C[0][p];
c=C[1][p];
for (i=0;i<=7;i++){
l1=l+dx[i];
c1=c+dy[i];
if (a[l1][c1]==0&&d[l1][c1]==0&&l1>=1&&l1<=n&&c1>=1&&c1<=m){
u++;
C[0][u]=l1;
C[1][u]=c1;
d[l1][c1]=d[l][c]+1;
}
}
p++;
}
min=20001;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (b[i][j]==d[i][j]&&min>b[i][j]&&b[i][j]!=0)
min=b[i][j];
g<<min;
return 0;}