Pagini recente » Cod sursa (job #399106) | Cod sursa (job #919604) | Cod sursa (job #688352) | Cod sursa (job #2977439) | Cod sursa (job #2499912)
#include <iostream>
#include <fstream>
using namespace std;
struct ura{int l,c;};
ura coada[10001];
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,i,j,lj,cj,lr,cr;
int r[102][102],mj[102][102];
int dirl[8]={-1,0,1,0,1,1,-1,-1};
int dirc[8]={0,1,0,-1,1,-1,1,-1};
void prelucrare(int lp,int cp,int a[102][102])
{
int sf=1,inc=1,lin,col;
coada[1].l=lp;
coada[1].c=cp;
while(inc<=sf)
{
for(i=0;i<8;i++)
{
lin=coada[inc].l+dirl[i];
col=coada[inc].c+dirc[i];
if(a[lin][col]==0)
{
sf++;
coada[sf].l=lin;
coada[sf].c=col;
a[lin][col]=a[coada[inc].l][coada[inc].c]+1;
}
}
inc++;
}
}
int main()
{
int inc=1,sf=1,lin,col,minn;
char s,str[101];
fin>>n>>m;
for(i=0;i<=n+1;i++)
{
r[i][0]=mj[i][0]=-1;
r[i][m+1]=mj[i][m+1]=-1;
}
for(i=0;i<=m+1;i++)
{
r[0][i]=mj[0][i]=-1;
r[n+1][i]=mj[n+1][i]=-1;
}
fin.get(s);
for(i=1;i<=n;i++)
{
fin.getline(str+1,m+1);
for(j=1;j<=m;j++)
{
if(str[j]=='X')
{
r[i][j]=-1;
mj[i][j]=-1;
}
if(str[j]=='R')
{
mj[i][j]=0;
lr=i;
cr=j;
}
if(s=='J')
{
r[i][j]=0;
lj=i;
cj=j;
}
mj[i][j]=r[i][j];
}
}
prelucrare(lj,cj,mj);
prelucrare(lr,cr,r);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(r[i][j]==mj[i][j]&&r[i][j]<minn&&r[i][j]!=0&&r[i][j]!=-1)
{
lin=i;
col=j;
minn=r[i][j];
}
}
fout<<minn<<" "<<lin<<" "<<col;
return 0;
}