Pagini recente » Cod sursa (job #1332713) | Cod sursa (job #905814) | Cod sursa (job #3204765) | Cod sursa (job #1594919) | Cod sursa (job #984252)
Cod sursa(job #984252)
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
struct poz{short int l;short int c;};
short int b[101][101],d[101][101],m,n,i,j,a[101][101];
char lin[201];
int dc[9]={0,0,0,-1,-1,-1,1,1,1};
int dl[9]={0,-1,1,1,0,-1,-1,0,1};
poz pr,pj,pc,pv;
void citire()
{
f>>m>>n;
for (i=1;i<=m;i++)
{
f.get();
f.get(lin,200);
for (j=0;j<=n-1;j++)
{
if (lin[j]==' ') a[i][j+1]=-1;
if (lin[j]=='R') pr.l=i,pr.c=j+1;
if (lin[j]=='J') pj.l=i,pj.c=j+1;
}
}
}
void lee(poz pr,short int b[101][101])
{
poz c[20002];
int incc=0,sfc=0;
c[incc]=pr;
while(incc<=sfc)
{
pc=c[incc++];
for (i=1;i<=8;i++)
{pv.l=pc.l+dl[i],pv.c=pc.c+dc[i];
if (b[pv.l][pv.c]==0 && a[pv.l][pv.c]==-1)
{
b[pv.l][pv.c]=b[pc.l][pc.c]+1;
c[++sfc]=pv;
}
}
}
}
int main()
{
citire();
int mini=10000,pozl,pozc;
lee(pr,b);
lee(pj,d);
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
if (b[i][j]==d[i][j] && b[i][j]<mini && b[i][j]!=0 )
mini=b[i][j],pozl=i,pozc=j;
g<<mini+1<<' '<<pozl<<' '<<pozc;
return 0;
}