Pagini recente » Cod sursa (job #2725477) | Cod sursa (job #407873) | Cod sursa (job #3260222) | Cod sursa (job #2579511) | Cod sursa (job #2627711)
#include <fstream>
using namespace std;
ifstream fin ("rj.in");
ofstream fout ("rj.out");
struct ura
{
int x,y;
};
ura q[11026];
char s[105];
int a[105][105],b[105][105],vL[8]={-1,-1,0,1,1,1,0,-1},vC[8]={0,1,1,1,0,-1,-1,-1};
int main ()
{
int n,m,i,j,mini=11026,st,dr,l,c;
ura romeo,julieta,poz;
fin>>n>>m;
for (i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]=b[i][0]=b[i][m+1]=-1;
for (j=0;j<=m+1;j++)
a[0][j]=a[n+1][j]=b[0][j]=b[n+1][j]=-1;
for (i=1;i<=n;i++)
{
fin.get();
fin.get(s,105);
for (j=1;j<=m;j++)
{
if (s[j-1]=='X')
a[i][j]=b[i][j]=-1;
if (s[j-1]=='R')
{
a[i][j]=1;
romeo.x=i;
romeo.y=j;
}
else
if (s[j-1]=='J')
{
b[i][j]=1;
julieta.x=i;
julieta.y=j;
}
}
}
q[1]=romeo;
st=dr=1;
while (st<=dr)
{
poz=q[st];
for (i=0;i<8;i++)
if (a[poz.x+vL[i]][poz.y+vC[i]]==0)
{
dr++;
q[dr].x=poz.x+vL[i];
q[dr].y=poz.y+vC[i];
a[q[dr].x][q[dr].y]=a[poz.x][poz.y]+1;
}
st++;
}
q[1]=julieta;
st=dr=1;
while (st<=dr)
{
poz=q[st];
for (i=0;i<8;i++)
if (b[poz.x+vL[i]][poz.y+vC[i]]==0)
{
dr++;
q[dr].x=poz.x+vL[i];
q[dr].y=poz.y+vC[i];
b[q[dr].x][q[dr].y]=b[poz.x][poz.y]+1;
}
st++;
}
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if (a[i][j]==b[i][j] && a[i][j]>0)
{
if (a[i][j]<mini)
{
mini=a[i][j];
l=i;
c=j;
}
}
fout<<mini<<" "<<l<<" "<<c;
return 0;
}