Pagini recente » Profil Forsaken | Profil valentino | Cod sursa (job #1055531) | Cod sursa (job #428418) | Cod sursa (job #3137246)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
struct Poz{
int l;
int c;
};
int dy[]={0, 1,-1, 0,-1,1,-1,1};
int dx[]={1, 0, 0,-1,-1,1,1,-1};
void lee(Poz ben, int v[110][110])
{
int i=0,j=0, ok=1;
Poz q[100000];
q[0]=ben;
v[ben.l][ben.c]=1;
Poz aux,w;
while(i<=j)
{
w=q[i++];
for(int k=0;k<8;++k)
{
aux.l=w.l+dx[k];
aux.c=w.c+dy[k];
if(v[aux.l][aux.c]==0)
{
ok=1;
v[aux.l][aux.c]=v[w.l][w.c]+1;
q[++j]=aux;
}
}
}
}
int i,j, n,m, r[110][110], ju[110][110], Min=102000,mj,mi;
Poz o,u;
int main()
{
fin>>n>>m;
char c;
fin.get(c);
for(i=0;i<=n+1;++i)
{
ju[i][0]=-1;
ju[i][m+1]=-1;
}
for(j=0;j<=m+1;++j)
ju[0][j]=ju[n+1][j]=-1;
for(i=1;i<=n;++i)
{
for(j=1;j<=m;++j)
{
fin.get(c);
if(c=='X')
ju[i][j]=-1;
else
ju[i][j]=0;
if(c=='R')
{
o.l=i;
o.c=j;
}
if(c=='J')
{
u.l=i;
u.c=j;
}
}
fin.get(c);
}
for(i=0;i<=n+1;++i)
for(j=0;j<=m+1;++j)
r[i][j]=ju[i][j];
lee(o, r);
lee(u,ju);
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
{
if(r[i][j]==ju[i][j])
if(r[i][j]<Min && r[i][j]>0)
{
Min=r[i][j];
mi=i;
mj=j;
}
}
fout<<Min<<" "<<mi<<" "<<mj;
return 0;
}