Pagini recente » Cod sursa (job #2211530) | Cod sursa (job #312329) | Cod sursa (job #2281553) | Cod sursa (job #929397) | Cod sursa (job #1231792)
#include<fstream>
#include<cstring>
#include<climits>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int m,n,r[101][101],jj[101][101],tmin=INT_MAX,dx[]={0,-1,-1,0,1,1,1,0,-1},dy[]={0,0,1,1,1,0,-1,-1,-1};
struct punct
{
int x,y;
};
punct x1,x2,pf;
void lee(int mat[101][101],int xi,int yi)
{
int coada[101][3],p,u,i,l,c;
coada[0][0]=xi;
coada[0][1]=yi;
coada[0][2]=1;
mat[xi][yi]=1;
p=0;
u=0;
while(p<=u)
{
l=coada[p][0];
c=coada[p][1];
for(i=1;i<=8;i++)
{
l+=dx[i];
c+=dy[i];
if(mat[l][c]==0 && l>=1 && l<=n && c>=1 && c<=m)
{
u++;
coada[u][0]=l;
coada[u][1]=c;
coada[u][2]=coada[p][2]+1;
mat[l][c]=coada[u][2];
}
}
p++;
}
}
void init()
{
char s[101];
int i,j;
f>>n>>m;
f.get();
for(i=1;i<=n;i++)
{
f.getline(s,101);
for(j=1;j<=m;j++)
{
if(s[j-1]=='X')
{
r[i][j]=-1;
jj[i][j]=-1;
}
else
if(s[j-1]=='R')
{
x1.x=i;
x1.y=j;
}
else
if(s[j-1]=='J')
{
x2.x=i;
x2.y=j;
}
}
}
}
void afis()
{
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(r[i][j]==jj[i][j] && r[i][j]<tmin && r[i][j]!=-1 && r[i][j])
{
tmin=r[i][j];
pf.x=i;
pf.y=j;
}
g<<tmin<<'\n'<<pf.x<<'\n'<<pf.y;
}
int main()
{
init();
lee(r,x1.x,x1.y);
lee(jj,x2.x,x2.y);
afis();
return 0;
}