Pagini recente » Cod sursa (job #1652336) | Cod sursa (job #1650467) | Cod sursa (job #995544) | Cod sursa (job #171997) | Cod sursa (job #1653278)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int n,m,xr,yr,xj,yj;
char a[102][102],c;
short int r[102][102],j[102][102];
void lee(int x0,int y0,short int d[102][102])
{
struct coada{int l,c;}C[102*102],p;
int dx[8]={-1,-1,0,1,1,1,0,-1},dy[8]={0,1,1,1,0,-1,-1,-1};
int prim=0,ultim=0;
C[0].l=x0;C[0].c=y0;d[x0][y0]=1;
while(prim<=ultim)
{
p=C[prim++];
for(int k=0;k<8;k++)
if(a[p.l+dx[k]][p.c+dy[k]]==' ' && d[p.l+dx[k]][p.c+dy[k]]==-1)
{
d[p.l+dx[k]][p.c+dy[k]]=1+d[p.l][p.c];
C[ultim++].l=p.l+dx[k];
C[ultim].c=p.c+dy[k];
}
}
}
int main()
{
f>>n>>m;
f.get();
for(int i=1;i<=n;i++)
{
f.getline(a[i],102);
for(int k=m-1;k>=0;k--)
{
a[i][k+1]=a[i][k];
if(a[i][k]=='R')
{
xr=i;
yr=k+1;
a[i][k]=' ';
}
if(a[i][k]=='J')
{
xj=i;
yj=k+1;
a[i][k]=' ';
}
if((int)a[i][k]==0)
a[i][k]=' ';
r[i][k]=-1;
j[i][k]=-1;
}
r[i][m]=-1;
j[i][m]=-1;
a[i][m+1]='\0';
}
for(int i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]='X',j[i][0]=j[i][m+1]=-1,r[i][0]=r[i][m+1]=-1;
for(int i=0;i<=m+1;i++)
a[0][i]=a[n+1][i]='X',j[0][i]=j[n+1][i]=-1,r[0][i]=r[n+1][i]=-1;
lee(xj,yj,j);
lee(xr,yr,r);
int tmin=102*102,xmin,ymin;
for(int i=1;i<=n;i++)
for(int k=1;k<=m;k++)
if(r[i][k]==j[i][k] && r[i][k]<tmin && r[i][k]!=-1)
tmin=r[i][k],xmin=i,ymin=k;
g<<tmin<<" "<<xmin<<" "<<ymin;
/*
for(int i=0;i<=n+1;i++)
{
for(int k=0;k<=m+1;k++)
cout<<j[i][k]<<" ";
cout<<endl;
}
//cout<<xr<<" "<<yr<<" "<<xj<<" "<<yj;
for(int i=0;i<=n+1;i++)
cout<<a[i]<<endl;
*/
return 0;
}