Pagini recente » Cod sursa (job #1990031) | Cod sursa (job #2094277) | Cod sursa (job #1388646) | Cod sursa (job #2549844) | Cod sursa (job #159899)
Cod sursa(job #159899)
#include<fstream.h>
ifstream fin("rj.in");
ofstream fout("rj.out");
int di[8]={0,1,0,-1,-1,1,-1,1};
int dj[8]={1,0,-1,0,-1,1,1,-1};
int n,m,xr,yr,xj,yj;
char a[101][101];
struct coada { int x,y;
} c[10000];
void citire(char a[101][101])
{ int i,j;
char c;
fin>>n>>m;
for(i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]='X';
for(i=0;i<=m+1;i++)
a[0][i]=a[n+1][i]='X';
fin.get(c);
for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)
{ fin.get(c);
a[i][j]=c;
if(a[i][j]=='R') { xr=i;
yr=j;
a[i][j]=' ';
}
else
if(a[i][j]=='J') { xj=i;
yj=j;
a[i][j]=' ';
}
}
fin.get(c);
}
}
void lee(int x,int y,int d[101][101])
{ int inc=0,sf=0,i,j;
coada p;
for(i=0;i<=n+1;i++)
for(j=0;j<=m+1;j++)
d[i][j]=0;
c[0].x=x;
c[0].y=y;
d[x][y]=1;
while(inc<=sf)
{ p=c[inc++];
for(i=0;i<8;i++)
{ if(a[p.x+di[i]][p.y+dj[i]]==' '&&d[p.x+di[i]][p.y+dj[i]]==0)
{ d[p.x+di[i]][p.y+dj[i]]=d[p.x][p.y]+1;
c[++sf].x=p.x+di[i];
c[sf].y=p.y+dj[i];
}
}
}
}
void afis(int r[101][101],int j[101][101])
{ int tmin=101*101+5,xmin=-1,ymin=-1,i,k;
for(i=1;i<=n;i++)
for(k=1;k<=m;k++)
if(r[i][k]==j[i][k])
if(r[i][k]<tmin&&r[i][k]!=0)
{ tmin=r[i][k];
xmin=i;
ymin=k;
}
fout<<tmin<<" "<<xmin<<" "<<ymin<<endl;
}
int main()
{ int r[101][101],j[101][101];
citire(a);
lee(xr,yr,r);
lee(xj,yj,j);
afis(r,j);
fin.close();
fout.close();
return 0;
}