Pagini recente » Cod sursa (job #2476504) | Cod sursa (job #2931756) | Cod sursa (job #3181641) | Romanii medaliati la IOI | Cod sursa (job #2085553)
#include <fstream>
using namespace std;
ifstream in ("rj.in");
ofstream out ("rj.out");
const int N=105;
const int dl[]={-1,-1,-1,0,1,1,1,0};
const int dc[]={-1,0,1,1,1,0,-1,-1};
struct poz
{
short int l,c;
};
poz q[N*N];
int a[N][N],d[N][N];
char s[N];
int main()
{
int n,m,i,j,st,dr,mini=500,lmin,cmin;
poz r,ju;
in>>n>>m;
in.get();
for (i=1;i<=n;i++)
{
in.getline(s,N);
for (j=0;j<m;j++)
{
if (s[j]=='X')
a[i][j+1]=d[i][j+1]=-1;
else
if (s[j]=='J')
ju.l=i, ju.c=j+1;
else
if (s[j]=='R')
r.l=i, r.c=j+1;
}
}
for(i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]=d[i][0]=d[i][m+1]=-1;
for(j=0;j<=m+1;j++)
a[0][j]=a[n+1][j]=d[0][j]=d[n+1][j]=-1;
st=dr=1;
q[1]=r;
d[r.l][r.c]=1;
while(st<=dr)
{
for(i=0;i<8;i++)
if(d[q[st].l+dl[i]][q[st].c+dc[i]]==0)
{
dr++;
q[dr].c=q[st].c+dc[i];
q[dr].l=q[st].l+dl[i];
d[q[dr].l][q[dr].c]=d[q[st].l][q[st].c]+1;
}
st++;
}
st=dr=1;
q[1]=ju;
a[ju.l][ju.c]=1;
while(st<=dr)
{
for(i=0;i<8;i++)
if(a[q[st].l+dl[i]][q[st].c+dc[i]]==0)
{
dr++;
q[dr].c=q[st].c+dc[i];
q[dr].l=q[st].l+dl[i];
a[q[dr].l][q[dr].c]=a[q[st].l][q[st].c]+1;
}
st++;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==d[i][j] && d[i][j]<mini && d[i][j]>0)
{
mini=d[i][j];
lmin=i;
cmin=j;
}
out<<mini<<" "<<lmin<<" "<<cmin;
return 0;
}