Pagini recente » Cod sursa (job #2488744) | Cod sursa (job #1396269) | Cod sursa (job #1344163) | Cod sursa (job #1009943) | Cod sursa (job #1818547)
#include <iostream>
#include<fstream>
#include<cstring>
#define INF 32000
#define N 105
using namespace std;
ifstream in("rj.in");
ofstream out("rj.out");
struct ptlee
{
short x,y;
}coada[N*N];
short ijulieta,jjulieta,iromeo,l,c,st,sf,jromeo,leer[N][N],leej[N][N],i,j,n,m,tmin=INF,imin,jmin,aux;
char h[N][N];
short dx[]={0,-1,1,0,0,1,1,-1,-1} , dy[]={0,0,0,-1,1,-1,1,-1,1};
void bordare()
{
for(i=0;i<=n+1;i++)
for(j=0;j<=m+1;j++)
h[i][j] = '#';
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{leer[i][j]= INF; leej[i][j]=INF;}
}
void citire()
{
in>>n>>m; in.get();
bordare();
for(i=1;i<=n;i++)
{in.get(h[i]+1,m+1);in.get();}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{if(h[i][j]=='R'){iromeo=i;jromeo=j;leer[i][j]=1;}
if(h[i][j]=='J'){ijulieta=i;jjulieta=j;leej[i][j]=1;}}
}
void slee()
{
coada[1].x=iromeo; coada[1].y=jromeo;
st=1;sf=1;
while(st<=sf)
{
l=coada[st].x;
c=coada[st].y;
st++;
for(i=1;i<=8;i++)
{
if(h[l+dx[i]][c+dy[i]]==' '&&leer[l+dx[i]][c+dy[i]]>leer[l][c]+1)
{
leer[l+dx[i]][c+dy[i]]=leer[l][c]+1; sf++; coada[sf].x=l+dx[i]; coada[sf].y=c+dy[i];
}
}
}
for(i=1;i<=sf;i++){coada[i].x=0;coada[i].y=0;}
coada[1].x=ijulieta; coada[1].y=jjulieta;
st=1;sf=1;
while(st<=sf)
{
l=coada[st].x;
c=coada[st].y;
st++;
for(i=1;i<=8;i++)
{
if(h[l+dx[i]][c+dy[i]]==' '&&leej[l+dx[i]][c+dy[i]]>leej[l][c]+1)
{
leej[l+dx[i]][c+dy[i]]=leej[l][c]+1; sf++; coada[sf].x=l+dx[i]; coada[sf].y=c+dy[i];
}
}
}
}
int main()
{
citire();
slee();
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(leer[i][j]==leej[i][j]&&leer[i][j]>1&&leej[i][j]>1)
if(leej[i][j]<tmin) {tmin=leej[i][j];imin=i;jmin=j;}
}
out<<tmin<<" "<<imin<<" "<<jmin;
return 0;
}