Pagini recente » Cod sursa (job #1500464) | Cod sursa (job #1925484) | Cod sursa (job #1221379) | Cod sursa (job #1327314) | Cod sursa (job #145784)
Cod sursa(job #145784)
#include <fstream.h>
#define Nmax 101
#define Mmax 101
ifstream f("rj.in");
ofstream g("rj.out");
struct element
{
int x,y;
};
int harta[Nmax][Mmax],n,m;
element romeo,julieta;
int harta2[Nmax][Mmax];
void citire()
{
f>>n>>m;
int i,j;
char c;
f.get(c);
for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
{
f.get(c);
if (c=='J')
{
julieta.x=i;
julieta.y=j;
harta[i][j]=0;
}
else
if (c=='R')
{
romeo.x=i;
romeo.y=j;
harta[i][j]=0;
}
else
if (c=='X')
harta[i][j]=-1;
else
if (c==' ')
harta[i][j]=0;
}
f.get(c);
}
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
harta2[i][j]=harta[i][j];
}
element c_r[10000],c_j[10000];
int st=1,dr=0;
element dir[9]={{0,0},{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
void lee(int a[Nmax][Mmax],element inceput,element coada[10000])
{
int i;
for (i=0;i<=n;i++)
{
a[i][0]=-1;
a[i][m+1]=-1;
}
for (i=0;i<=m;i++)
{
a[0][i]=-1;
a[n+1][i]=-1;
}
st=1;
dr=1;
coada[1].x=inceput.x;
coada[1].y=inceput.y;
a[inceput.x][inceput.y]=1;
while (st<=dr)
{
for (i=1;i<=8;i++)
if (a[coada[st].x+dir[i].x][coada[st].y+dir[i].y]==0)
{
dr++;
coada[dr].x=coada[st].x+dir[i].x;
coada[dr].y=coada[st].y+dir[i].y;
a[coada[dr].x][coada[dr].y]=a[coada[st].x][coada[st].y]+1;
}
st++;
}
}
void drum()
{
int i,j;
int min,c_min,l_min;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (harta[i][j]==harta2[i][j] && harta[i][j]!=-1)
{
min=harta[i][j];
c_min=j;
l_min=i;
}
g<<min<<" "<<l_min<<" "<<c_min;
}
main()
{
int i,j;
citire();
lee(harta,romeo,c_r);
lee(harta2,julieta,c_j);
drum();
}