Pagini recente » Cod sursa (job #722269) | Cod sursa (job #726113) | Cod sursa (job #2561691) | Cod sursa (job #2721184) | Cod sursa (job #2112152)
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
const int N=102;
const int dl[]= {-1,0,1,0,1,-1,-1,1};
const int dc[]= {0,1,0,-1,1,-1,1,-1};
struct poz
{
int l,c;
};
int a[N][N],b[N][N];
int dR[N][N],dJ[N][N],n,m;
poz q[N];
char v[N];
int main()
{
int i,j,st,dr,vmin=99999,imin=999999,jmin=999999;
poz r,ju,x,y;
//char p;
fin>>n>>m>>ws;
for(i=1; i<=n; i++)
{
fin.getline(1+v,N);
//fin>>ws;
for(j=1; j<=m; j++)
{
// p=v[j];
if(v[j]=='X')
{
a[i][j]=-2;
b[i][j]=-2;
}
else if(v[j]=='R')
{
a[i][j]=0;
b[i][j]=-2;
r=(poz)
{
i,j
};
}
else if(v[j]=='J')
{
a[i][j]=-2;
b[i][j]=0;
ju=(poz)
{
i,j
};
}
else
{
a[i][j]=-1;
b[i][j]=-1;
}
}
}
//bordare
for(i=0;i<=m+1;i++)
{a[0][i]=a[n+1][i]=-2;
b[0][i]=b[n+1][i]=-2;}
for(i=0;i<=n+1;i++)
{
a[i][0]=a[i][m+1]=-2;
b[i][0]=b[i][m+1]=-2;
}
/* for(i=0;i<=n+1;i++)
{
for(j=0;j<=m+1;j++)
fout<<a[i][j]<<" ";
fout<<"\n";
}
fout<<"\n";*/
st=0; dr=-1;
q[++dr]=r;
a[r.l][r.c]=1;
while(st<=dr)
{
x=q[st++];
for(i=0;i<8;i++)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if(a[y.l][y.c]==-1)
{
q[++dr]=y;
a[y.l][y.c]=1+a[x.l][x.c];
}
}
}
st=0; dr=-1;
q[++dr]=ju;
b[ju.l][ju.c]=1;
while(st<=dr)
{
x=q[st++];
for(i=0;i<8;i++)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if(b[y.l][y.c]==-1)
{
q[++dr]=y;
b[y.l][y.c]=1+b[x.l][x.c];
}
}
}
/* for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
fout<<a[i][j]<<" ";
fout<<"\n";
}*/
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(a[i][j]==b[i][j] && a[i][j]!=-2 && a[i][j]!=-1 && a[i][j]!=1)
if(a[i][j]<vmin)
{vmin=a[i][j]; imin=i; jmin=j;}
}
fout<<vmin<<" "<<imin<<" "<<jmin;
return 0;
}