Pagini recente » Cod sursa (job #2757130) | Cod sursa (job #2701801) | Cod sursa (job #633389) | Cod sursa (job #2797369) | Cod sursa (job #2585177)
#include <fstream>
#define dim 105
using namespace std;
ifstream fin ("rj.in");
ofstream fout ("rj.out");
int nrLinii,nrColoane;
int i,j;
int linR,colR;
int linJ,colJ;
int minim;
int xMin=-1,yMin=-1;
char ch;
char mat[dim][dim];
int romeo[dim][dim];
int julieta[dim][dim];
void Lee(int xp,int yp,int v[dim][dim]);
int main()
{
fin>>nrLinii>>nrColoane;
for (i=0; i<=nrColoane+1; i++)
mat[0][i]=mat[nrLinii+1][i]='X';
for (i=0; i<=nrLinii+1; i++)
mat[i][0]=mat[i][nrColoane+1]='X';
fin.get();
for (i=1; i<=nrLinii; i++)
{
fin.getline(mat[i],102);
for (j=nrColoane; j>=1; j--)
{
mat[i][j]=mat[i][j-1];
if (mat[i][j]=='R')
{
mat[i][j]==' ';
linR=i;
colR=j;
}
if (mat[i][j]=='J')
{
mat[i][j]==' ';
linJ=i;
colJ=j;
}
}
}
Lee(linR,colR,romeo);
Lee(linJ,colJ,julieta);
minim=dim*dim+10;
for (i=1; i<=nrLinii; i++)
{
for (j=1; j<=nrColoane; j++)
{
//fout<<i<<' '<<j<<' '<<romeo[i][j]<<' '<<julieta[i][j]<<'\n';
if (romeo[i][j]==julieta[i][j])
if (romeo[i][j]<minim && romeo[i][j]!=-1)
{
minim=romeo[i][j];
xMin=i;
yMin=j;
}
}
}
fout<<minim<<' '<<xMin<<' '<<yMin;
return 0;
}
void Lee(int xp,int yp,int v[dim][dim])
{
struct coada
{
int lin,col;
};
coada co[dim*dim],x;
int dl[10]={-1,-1,-1,0,1,1,1,0};
int dc[10]={-1,0,1,1,1,0,-1,-1};
int inc,sf;
int l9,c9;
int i,j;
int k;
for (i=0; i<=nrLinii+1; i++)
for (j=0; j<=nrColoane+1; j++)
v[i][j]=-1;
sf=1;
co[sf].lin=xp;
co[sf].col=yp;
v[xp][yp]=1;
inc=1;
while (inc<=sf)
{
x=co[inc];
inc++;
for (k=0; k<8; k++)
{
l9=x.lin+dl[k];
c9=x.col+dc[k];
if (mat[l9][c9]==' ' && v[l9][c9]==-1)
{
v[l9][c9]=v[x.lin][x.col]+1;
sf++;
co[sf].lin=l9;
co[sf].col=c9;
}
}
}
}