Pagini recente » Cod sursa (job #3248616) | Cod sursa (job #2063999) | Cod sursa (job #204362) | Cod sursa (job #2164125) | Cod sursa (job #645405)
Cod sursa(job #645405)
#include<fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int ro[110][110],ju[110][110],tmin,i,j,n,m,xr,yr,xj,yj,xt,yt;
int dx[]={-1,-1,-1,0,1,1,1,0},dy[]={-1,0,1,1,1,0,-1,-1};
char s[110];
struct asde
{
int x;
int y;
};
asde z,c[10010];
void citeste()
{
f>>n>>m;
f.get();
for(i=1;i<=n;i++)
{
f.getline(s,110);
for(j=1;j<=m;j++)
{
if(s[j-1]=='X')
{
ro[i][j]=ju[i][j]=-1;
}
if(s[j-1]=='R')
{
xr=i;
yr=j;
}
if(s[j-1]=='J')
{
xj=i;
yj=j;
}
}
}
}
void bold(int a[110][110])
{
int i;
for(i=0;i<m+2;i++)
{
a[0][i]=a[n+1][i]=-1;
}
for(i=0;i<n+2;i++)
{
a[i][0]=a[i][m+1]=-1;
}
}
void lee(int a[110][110],int x1,int y1)
{
a[x1][y1]=1;
c[1].x=x1;
c[1].y=y1;
int p,u;
p=u=1;
a[x1][y1]=1;
while(p<=u)
{
z=c[p];
for(i=0;i<8;i++)
{
x1=z.x+dx[i];
y1=z.y+dy[i];
if(a[x1][y1]==0)
{
a[x1][y1]=a[z.x][z.y]+1;
c[++u].x=x1;
c[u].y=y1;
}
}
p++;
}
}
int main()
{
citeste();
bold(ro);
bold(ju);
lee(ro,xr,yr);
lee(ju,xj,yj);
tmin=10000000;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if((ro[i][j]==ju[i][j])&&(ro[i][j]>0))
{
if(tmin>ro[i][j])
{
tmin=ro[i][j];
xt=i;
yt=j;
}
}
}
}
g<<tmin<<" "<<xt<<" "<<yt;
return 0;
}