Pagini recente » Cod sursa (job #2330956) | Cod sursa (job #277418) | Cod sursa (job #76504) | Cod sursa (job #260936) | Cod sursa (job #1611701)
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int a[102][102], b[102][102], n, m ,xr, xj,yr,yj,i,j,dx[8]={-1,-1,-1,0,0,1,1,1},dy[8]={0,1,-1,-1,1,0,-1,1},xx,yy,in,sf,mini=10000000;
char x[102];
struct el{int x;int y;};
el z[100100];
int main()
{
f>>n>>m;
f.get();
for(i=1;i<=n;i++)
{
f.getline(x,101);
for(j=0;j<m;j++)
if(x[j]==' ')
{
a[i][j+1]=0;
b[i][j+1]=0;
}
else
if(x[j]=='X')
{
a[i][j+1]=-1;
b[i][j+1]=-1;
}
else
if(x[j]=='R')
{
xr=i;
yr=j+1;
}
else
{
xj=i;
yj=j+1;
}
}
for(i=0;i<=n+1;i++)
{
a[i][0]=-1;
a[i][n+1]=0;
b[i][0]=-1;
b[i][n+1]=0;
}
for(i=1;i<=m;i++)
{
a[0][i]=-1;
a[n+1][i]=-1;
b[0][i]=-1;
b[n+1][i]=-1;
}
in=1;sf=1;
a[xr][yr]=1;
z[1].x=xr;
z[1].y=yr;
while(in<=sf)
{
xr=z[in].x;
yr=z[in].y;
for(i=0;i<=7;i++)
{
xx=xr+dx[i];
yy=yr+dy[i];
if(a[xx][yy]==0)
{
sf++;
a[xx][yy]=a[xr][yr]+1;
z[sf].x=xx;
z[sf].y=yy;
}
}
in++;
}
in=1;sf=1;
b[xj][yj]=1;
z[1].x=xj;
z[1].y=yj;
while(in<=sf)
{
xj=z[in].x;
yj=z[in].y;
for(i=0;i<=7;i++)
{
xx=xj+dx[i];
yy=yj+dy[i];
if(b[xx][yy]==0)
{
sf++;
b[xx][yy]=b[xj][yj]+1;
z[sf].x=xx;
z[sf].y=yy;
}
}
in++;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j] and a[i][j]>0)
if(a[i][j]<mini)
{
mini=a[i][j];
xx=i;
yy=j;
}
}
g<<mini<<" "<<xx<<" "<<yy;
return 0;
}