Pagini recente » Cod sursa (job #3154009) | Cod sursa (job #1188670) | Cod sursa (job #2821066) | Cod sursa (job #2051438) | Cod sursa (job #129215)
Cod sursa(job #129215)
#include <fstream>
#include <string.h>
using namespace std;
char a[105][105];
int r[105][105],j[105][105];
int x[10000],y[10000],nr;
int xr,yr,xj,yj;
int n,m;
const int l[10]={-1,-1,-1,0,0,1,1,1};
const int c[10]={-1,0,1,-1,1,-1,0,1};
ifstream fin ("rj.in");
ofstream fout("rj.out");
void citire()
{
fin>>n>>m;
for (int i=0;i<=n+1;i++)
{
a[0][i]='X';
a[m+1][i]='X';
}
for (int i=0;i<=m+1;i++)
{
a[i][0]='X';
a[i][n+1]='X';
}
char c[105];
fin.getline (c,105);
for (int i=1;i<=n;i++)
{
fin.getline (c,105);
for (int j=0;j<m;j++)
{
a[i][j+1]=c[j];
if (c[j]=='R')
{
xr=i;
yr=j+1;
a[i][j+1]=' ';
}
else
if (c[j]=='J')
{
xj=i;
yj=j+1;
a[i][j+1]=' ';
}
}
}
}
void matrice(int m[105][105],int xx,int yy)
{
memset (x,0,sizeof (x));
memset (y,0,sizeof (y));
x[0]=xx;
y[0]=yy;
m[x[0]][y[0]]=1;
nr=0;
for (int i=0;i<nr;i++)
for (int k=0;k<8;k++)
if (a[x[i] +l[k]] [y[i] +c[k]]==' ' && m[x[i] +l[k]] [y[i] +c[k]]==0)
{
x[nr]=x[i]+l[k];
y[nr]=y[i]+c[k];
m[x[nr]][y[nr]]=m[x[i]][y[i]]+1;
nr++;
}
}
void minim ()
{
long min=1000003;
long xmin=0,ymin=0;
for (int i=1;i<=n;i++)
for (int y=1;y<=m;y++)
if (r[i][y]==j[i][y])
if (r[i][y]<min)
{
min=r[i][y];
xmin=i;
ymin=y;
}
fout<<min<<" "<<xmin<<" "<<ymin<<"\n";
}
int main()
{
citire();
matrice(r,xr,yr);
matrice(j,xj,yj);
minim();
fin.close();
fout.close();
return 0;
}