Pagini recente » Cod sursa (job #2029267) | Cod sursa (job #1689961) | Cod sursa (job #2368368) | Cod sursa (job #2968354) | Cod sursa (job #1877348)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("rj.in");
ofstream g ("rj.out");
struct mm
{
short lin,col;
}p,c[101*101],fin,romeo,juli;
char s[101],x;
short ro[101][101],ju[101][101],v[101][101];
short n,m,i,j,nr,a,b,prim,ultim,mini=10001;
short dx[4]={0,0,1,-1};
short dy[4]={1,-1,0,0};
void lee(mm p,short v[101][101])
{
prim=ultim=0;
c[prim]=p;
v[p.lin][p.col]=1;
//cout<<p.lin<<" "<<p.col;
while(prim<=ultim)
{
p=c[prim];
prim++;
for(i=0;i<=3;i++)
{
if(v[p.lin+dx[i]][p.col+dy[i]]==0) {v[p.lin+dx[i]][p.col+dy[i]]=v[p.lin][p.col]+1;
ultim++;
c[ultim].lin=p.lin+dx[i];
c[ultim].col=p.col+dy[i];
}
}
}
}
int main()
{
f>>n>>m;
f.get();
for(i=1;i<=n;i++)
{
f.getline(s,101);
for(j=0;j<m;j++)
{
//cout<<x<<'1'<<endl;
if(s[j]=='X') ro[i][j+1]=ju[i][j+1]=-1;
else if(s[j]==' ') ro[i][j+1]=ju[i][j+1]=0;
else if(s[j]=='R') {romeo.lin=i;romeo.col=j+1;}
else if(s[j]=='J') {juli.lin=i;juli.col=j+1;}
//cout<<v[j]<<1<<endl;
}
//f.get();
}
for(i=0;i<=n+1;i++)
{
ro[i][0]=ju[i][0]=-1;
ro[i][m+1]=ju[i][m+1]=-1;
}
for(i=0;i<=m+1;i++)
{
ro[0][i]=ju[0][i]=-1;
ro[n+1][i]=ju[n+1][i]=-1;
}
lee(romeo,ro);
lee(juli,ju);
for(i=0;i<=n+1;i++)
{
for(j=0;j<=m+1;j++)
if(ro[i][j]==ju[i][j] && ro[i][j]>0) if(ro[i][j]<mini) mini=ro[i][j];
}
g<<mini-1;
return 0;
}