Pagini recente » Cod sursa (job #2416906) | Cod sursa (job #2804918) | Cod sursa (job #2367255) | Cod sursa (job #2643252) | Cod sursa (job #363271)
Cod sursa(job #363271)
#include <fstream.h>
char h[105][105];
int a[105][105],n,m,xr,yr,xj,yj,b[105][105],dx[9]={0,0,1,0,-1,1,1,-1,-1},dy[9]={0,1,0,-1,0,1,-1,-1,1};
char x[10009],y[10009]; //00
int main()
{int i,j;
ifstream q("rj.in");
ofstream w("rj.out");
q>>n>>m;
q.get();
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
{h[i][j]=q.get();
if(h[i][j]=='R')
{xr=i;
yr=j;}
if(h[i][j]=='J')
{xj=i;
yj=j;}}
q.get();}
int l,xi,yi,d,st=1,dr=1;
x[1]=xr;
y[1]=yr;
b[xr][yr]=1;
while(st<=dr)
{d=b[x[st]][y[st]]+1;
for(l=1;l<=8;l++)
{xi=x[st]+dx[l];
yi=y[st]+dy[l];
if(xi<=n && xi>=1 && yi<=m && yi>=1)
if((b[xi][yi]==0 || b[xi][yi]>d) && h[xi][yi]!='X')
{dr++;
x[dr]=xi;
y[dr]=yi;
b[xi][yi]=d;}}
st++;}
st=1;
dr=1;
x[1]=xj;
y[1]=yj;
a[xj][yj]=1;
while(st<=dr)
{d=a[x[st]][y[st]]+1;
for(l=1;l<=8;l++)
{xi=x[st]+dx[l];
yi=y[st]+dy[l];
if(xi<=n && xi>=1 && yi<=m && yi>=1)
if((a[xi][yi]==0 || a[xi][yi]>d) && h[xi][yi]!='X')
{dr++;
x[dr]=xi;
y[dr]=yi;
a[xi][yi]=d;}}
st++;}
int min=10000,p,x;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]!=0 && a[i][j]==b[i][j] && a[i][j]<min)
{p=i;
x=j;
min=a[i][j];}
w<<min<<" "<<p<<" "<<x;
w.close();
q.close();
return 0;
}