Pagini recente » Cod sursa (job #2655800) | Cod sursa (job #1927031) | Cod sursa (job #924589) | Cod sursa (job #3227181) | Cod sursa (job #1653496)
#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];
short int r[102][102],j[102][102];
void lee(int x0,int y0,short int b[102][102])
{
struct coada{int l,c,d;}C[102*102],x,y;
int dx[8]={-1,-1,0,1,1,1,0,-1},dy[8]={0,1,1,1,0,-1,-1,-1};
int inc=0,sf=0;
x.l=x0;x.c=y0;x.d=1;b[x0][y0]=1;
C[inc]=x;
while(inc<=sf)
{
x=C[inc++];
for(int k=0;k<8;k++)
{
y.l=x.l+dx[k];
y.c=x.c+dy[k];
if(a[y.l][y.c]==' ' && b[y.l][y.c]==-1)
{
y.d=x.d+1;//cout<<y.l<<" "<<y.c<<" "<<y.d<<endl;
b[y.l][y.c]=y.d;
C[sf++]=y;
}
}
}
}
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+1]=='R')
{
xr=i;
yr=k+1;
a[i][k+1]=' ';
}
if(a[i][k+1]=='J')
{
xj=i;
yj=k+1;
a[i][k+1]=' ';
}
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]=-2,r[i][0]=r[i][m+1]=-2;
for(int i=0;i<=m+1;i++)
a[0][i]=a[n+1][i]='X',j[0][i]=j[n+1][i]=-2,r[0][i]=r[n+1][i]=-2;
lee(xj,yj,j);
lee(xr,yr,r);
int tmin=102*102,xmin=-1,ymin=-1;
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<<r[i][k]<<" ";
cout<<endl;
}
cout<<endl;
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;
}