Pagini recente » Cod sursa (job #1765390) | Cod sursa (job #1590666) | Cod sursa (job #2990211) | Cod sursa (job #1772626) | Cod sursa (job #1206392)
#include <fstream>
#include <iostream>
#include <cstdio>
#define nmax 102
using namespace std;
int m[nmax][nmax],s[nmax][nmax];
int p1[8]={0, 1, 0, -1, -1, 1, -1, 1};
int o [8]={1, 0, -1, 0, -1, 1, 1,-1};
int k,l;
ofstream fo("rj.out");
void lee(int a,int b,int p[nmax][nmax])
{
p[a][b]=1;
int i,j;
for (i=0;i<k+2;++i)
{
p[i][0]=-1;
p[i][l+1]=-1;
}
for (i=0;i<l+2;++i)
{
p[0][i]=-1;
p[k+1][i]=-1;
}
int x[k*l],y[k*l],f=1,g=1;
x[1]=a;
y[1]=b;
while (f<=g)
{
for (i=0;i<8;++i)
if (p[x[f]+p1[i]][y[f]+o[i]] == -2 && (x[f]+p1[i] != a || y[f]+o[i] !=b))
{
p[x[f]+p1[i]][y[f]+o[i]]=p[x[f]][y[f]]+1;
++g;
x[g]=x[f]+p1[i];
y[g]=y[f]+o[i];
}
++f;
}
}
int main()
{
freopen("rj.in","r",stdin);
char o;
scanf("%d%d%c",&k,&l,&o);
int i,j;
int a,b,c,d;
for (i=1;i<=k;++i)
{
for (j=1;j<=l;++j)
{
scanf("%c",&o);
if (o == ' ')
{
m[i][j]=-2;
s[i][j]=-2;
}
else
if (o == 'X')
{
m[i][j]=-1;
s[i][j]=-1;
}
else
if (o == 'R')
{
s[i][j]=-1;
m[i][j]=-1;
a=i;
b=j;
}
else
if (o == 'J')
{
m[i][j]=-1;
s[i][j]=-1;
c=i;
d=j;
}
}
scanf("%c/n",&o);
}
lee(a,b,s);
lee(c,d,m);
int xm,ym,mm=999999;
for (i=1;i<=k;++i)
for (j=1;j<=l;++j)
if (s[i][j] == m[i][j] && s[i][j] >-1 && m[i][j] >-1 && s[i][j] < mm)
{
mm=s[i][j];
xm=i;
ym=j;
}
fo<<mm<<" "<<xm<<" "<<ym<<"\n";
fo.close();
return 0;
}