Pagini recente » Cod sursa (job #2396294) | Cod sursa (job #1507587) | Cod sursa (job #2135187) | Cod sursa (job #1866960) | Cod sursa (job #1857613)
#include <fstream>
using namespace std;
ifstream fin ("rj.in");
ofstream fout ("rj.out");
struct pozitie
{int l,c;}coada[10205],z,z1;
int a[101][101],R[101][101],J[101][101],p,u,x,y,xr,xj,yr,yj,m,n,tmin,xint,yint;
void bordare (int a[101][101])
{
for(int i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]=-1;
for (int j=0;j<=m+1;j++)
a[0][j]=a[n+1][j]=-1;
}
void Lee (int a[101][101], int x, int y)
{
p=u=1;
coada[p].l=x;
coada[p].c=y;
a[x][y]=1;
while (p<=u)
{
z=coada[p];
p++;
if (a[z.l+1][z.c]==0)
{z1.l=z.l+1;
z1.c=z.c;
coada[++u]=z1;
a[z1.l][z1.c]=a[z.l][z.c]+1;
}
if (a[z.l-1][z.c]==0)
{z1.l=z.l-1;
z1.c=z.c;
coada[++u]=z1;
a[z1.l][z1.c]=a[z.l][z.c]+1;
}
if (a[z.l][z.c-1]==0)
{z1.l=z.l;
z1.c=z.c-1;
coada[++u]=z1;
a[z1.l][z1.c]=a[z.l][z.c]+1;
}
if (a[z.l][z.c+1]==0)
{z1.l=z.l;
z1.c=z.c+1;
coada[++u]=z1;
a[z1.l][z1.c]=a[z.l][z.c]+1;
}
if (a[z.l-1][z.c+1]==0)
{z1.l=z.l-1;
z1.c=z.c+1;
coada[++u]=z1;
a[z1.l][z1.c]=a[z.l][z.c]+1;
}
if (a[z.l+1][z.c+1]==0&&z.c+1<=n)
{z1.l=z.l+1;
z1.c=z.c+1;
coada[++u]=z1;
a[z1.l][z1.c]=a[z.l][z.c]+1;
}
if (a[z.l-1][z.c-1]==0&&z.c+1<=n)
{z1.l=z.l-1;
z1.c=z.c-1;
coada[++u]=z1;
a[z1.l][z1.c]=a[z.l][z.c]+1;
}
if (a[z.l+1][z.c-1]==0&&z.c+1<=n)
{z1.l=z.l+1;
z1.c=z.c-1;
coada[++u]=z1;
a[z1.l][z1.c]=a[z.l][z.c]+1;
}
}
}
void intalnire ()
{
tmin=101*101;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
if (R[i][j]==J[i][j]&&R[i][j]<tmin&&R[i][j]>0)
{ tmin=R[i][j];
xint=i;
yint=j;
}
fout<<tmin<<" "<<xint<<" "<<yint;
}
int main()
{
char s[105];
fin>>n>>m; fin.get();
for (int i=1;i<=n;i++){
fin.getline(s,105);
for (int j=1;j<=m;j++)
{
x=s[j-1];
if (x=='X')
a[i][j]=-1;
else
if(x=='R')
{xr=i;
yr=j;
}
else
if (x=='J')
{xj=i;
yj=j;
}
else a[i][j]=0;
}
}
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
{
R[i][j]=a[i][j];
J[i][j]=a[i][j];
}
bordare (R);
bordare (J);
Lee (R,xr,yr);
Lee (J,xj,yj);
intalnire ();
return 0;
}