Pagini recente » Cod sursa (job #2183128) | Cod sursa (job #1495391) | Cod sursa (job #2698074) | Cod sursa (job #1222124) | Cod sursa (job #1877395)
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
struct pozitie{short l,c;};
short dl[]={-1,0,1,0,-1,1,-1,1};
short dc[]={0,1,0,-1,-1,1,1,-1};
pozitie C[100001],romeo,julieta,p,v;
char s[101];
short m,n,i,j,R[101][101],J[101][101],prim,ultim,k,mini,I,K;
void lee(short x0,short y0, short M[101][101])
{
C[0].l=x0;
C[0].c=y0;
prim=ultim=0;
M[x0][y0]=1;
while(prim<=ultim )
{
p=C[prim];
prim++;
for(k=0;k<=7;k++)
{
v.l=p.l+dl[k];
v.c=p.c+dc[k];
if(M[v.l][v.c]==0)
{
M[v.l][v.c]=M[p.l][p.c]+1;
ultim++;
C[ultim]=v;
}
}
}
}
int main()
{
f>>m>>n;
f.get();
for(i=1;i<=n;i++)
{
f.getline(s,101);
{for(j=0;j<m;j++)
if(s[j]=='R') {romeo.l=i; romeo.c=j+1;}
else if(s[j]=='J') {julieta.l=i; julieta.c=j+1;}
else if (s[j]==' ') R[i][j+1]=J[i][j+1]=0;
else if (s[j]=='X') R[i][j+1]=J[i][j+1]=-1;
}
}
for(i=0;i<=n+1;i++)
{
R[i][0]=-1;
R[i][m+1]=-1;
J[i][0]=-1;
J[i][m+1]=-1;
}
for(j=0;j<=m+1;j++)
{
R[0][j]=-1;
R[n+1][j]=-1;
J[0][j]=-1;
J[n+1][j]=-1;
}
mini=10202;
lee(romeo.l,romeo.c,R);
lee(julieta.l,julieta.c,J);
for(i=0;i<=n+1;i++)
for(j=0;j<=m+1;j++)
{
if(R[i][j]==J[i][j] && R[i][j]>0)
if(R[i][j]<mini)
{
mini=R[i][j];
I=i;
K=j;
}
}
for(i=0;i<=n+1;i++)
{
for(j=0;j<=m+1;j++)
g<<J[i][j]<<" ";
g<<endl;
}
return 0;
}