Pagini recente » Cod sursa (job #1834646) | Cod sursa (job #1822339) | Cod sursa (job #1220150) | Cod sursa (job #1012645) | Cod sursa (job #1877365)
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
struct pozitie{int l,c;};
int dl[]={-1,0,1,0};
int dc[]={0,1,0,-1};
pozitie C[100001],romeo,julieta,p,v;
char s[101];
int m,n,i,j,R[101][101],J[101][101],prim,ultim,k,mini,I,K;
void lee(int x0,int y0, int M[101][101])
{
C[0].l=x0;
C[0].c=y0;
prim=ultim=0;
M[x0][y0]=1;
while(prim<=ultim )//&& R[p.l][p.c]==0)
{
p=C[prim];
prim++;
for(k=0;k<=3;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][n+1]=-1;
J[i][0]=-1;
J[i][n+1]=-1;
}
for(j=1;j<=n;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;
}
}
g<<mini-1<<" "<<I<<" "<<K;
return 0;
}