Pagini recente » Cod sursa (job #1406229) | Cod sursa (job #1511356)
#include <fstream>
using namespace std;
ofstream g("rj.out");
char a [101][101];
int n,m,x[10201],y[10201],ar[101][101],aj[101][101];
int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};
void citire()
{int i;
ifstream f("rj.in");
f>>n>>m;
f.get();
for(i=0;i<n;i++)
{
f.getline(a[i],101,'\n');
}
}
int bune(int i,int j)
{
return (i>=0 && i<n && j>=0 && j<m);
}
void Lee(int arj[][101],int i,int j)
{int k,pi=0,ps=0,ii,jj;
x[0]=i;
y[0]=j;
arj[i][j]=1;
while(pi<=ps)
{ i=x[pi];
j=y[pi];
for(k=0;k<8;k++)
{
ii=i+dx[k];
jj=j+dy[k];
if(bune(ii,jj)==1)
if(a[ii][jj]==' ')
if(arj[ii][jj]==0 || arj[ii][jj]>arj[i][j]+1)
{
arj[ii][jj]=arj[i][j]+1;
ps++;
x[ps]=ii;
y[ps]=jj;
}
}
pi++;
}
}
int main()
{int i,j,xr,yr,xi,yi,xj,yj,min;
citire();
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(a[i][j]=='R')
{xr=i;
yr=j;}
if(a[i][j]=='J')
{xj=i;
yj=j;}
}
Lee(ar,xr,yr);
Lee(aj,xj,yj);
min=m*n+1;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
if(ar[i][j]==aj[i][j] and ar[i][j]!=0)
if(min>ar[i][j])
{
min=ar[i][j];
xi=i;
yi=j;
}
g<<min<<" "<<xi+1<<" "<<yi+1;
return 0;
}