Pagini recente » Cod sursa (job #2555222) | Cod sursa (job #2479250) | Cod sursa (job #2378772) | Cod sursa (job #3242216) | Cod sursa (job #1319602)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
struct Element
{
int l,c;
unsigned d;
};
Element c[100*100+1],x,y;
char ch[101];
int n,m,i,j,inc,sf,a[102][102],b[102][102],dl[]={-1,-1,0,1,1,1,0,-1},dc[]={0,1,1,1,0,-1,-1,-1},xr,yr,xj,yj,h,lin,col,nr;
int main()
{
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++)
{
fin.getline(ch,101);
// cout<<ch<<"\n";
for(j=0;j<m;j++)
{
if(ch[j]=='X')
a[i][j+1]=-1;
else if(ch[j]=='R')
a[i][j+1]=-3;//romeo
else if(ch[j]=='J')
a[i][j+1]=-4;//jilieta
if(a[i][j]==0)
a[i][j]=-2;
if(a[i][j]==-3)
xr=i,yr=j;
else if(a[i][j]==-4)
xj=i,yj=j;
b[i][j]=a[i][j];
}
}
for(i=0;i<=n;i++) a[i][0]=a[i][m+1]=-1;
for(i=0;i<=m+1;i++) a[0][i]=a[n+1][i]=-1;
x.l=xr; x.c=yr; x.d=1; c[inc]=x; a[xr][yr]=1;
while(inc<=sf)
{
x=c[inc++];
for(i=0;i<8;i++)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if(a[y.l][y.c]==-2)
{
y.d=x.d+1;
a[y.l][y.c]=y.d;
c[++sf]=y;
}
}
}
inc=sf=0;
x.l=xj; x.c=yj; x.d=1; c[inc]=x; a[xj][yj]=1;
while(inc<=sf)
{
x=c[inc++];
for(i=0;i<8;i++)
{
y.l=x.l+dl[i];
y.c=x.c+dc[i];
if(b[y.l][y.c]==-2)
{
y.d=x.d+1;
b[y.l][y.c]=y.d;
c[++sf]=y;
if(a[y.l][y.c]==b[y.l][y.c])
lin=y.l,col=y.c,nr=b[y.l][y.c];
}
}
}
fout<<nr<<" "<<lin<<" "<<col;
return 0;
}