Pagini recente » Cod sursa (job #1780054) | Cod sursa (job #2952465) | Cod sursa (job #2357760) | Cod sursa (job #1050335) | Cod sursa (job #1589611)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int dx[]= {1,0,-1,0};
int dy[]= {0,1,0,-1};
int R[110][110],J[110][110];
int n,m;
int xr,yr,xj,yj;
struct coada
{
int x,y;
};
void bordare(int X[110][110],int x,int y)
{
for(int i=0; i<=x+1; i++)
X[i][0]=X[i][y+1]=-1;
for(int i=0; i<=y+1; i++)
X[0][i]=X[x+1][i]=-1;
}
void citire()
{
fin>>n>>m;
fin.get();
for(int i=1; i<=n; i++)
{
char input[105];
fin.getline(input,105);
for(unsigned int j=0; j<strlen(input); j++)
{
if(input[j]=='X')
{
R[i][j+1]=-1;
J[i][j+1]=-1;
}
if(input[j]=='R')
{
xr=i;
yr=j+1;
}
if(input[j]=='J')
{
xj=i;
yj=j+1;
}
}
}
bordare(R,n,m);
bordare(J,n,m);
}
void lee(int X[110][110],int x0,int y0)
{
coada C[110*110],E;
int ic=1,sc=1;
X[x0][y0]=1;
C[ic].x=x0;
C[ic].y=y0;
while(ic<=sc)
{
E=C[ic++];
for(int k=0; k<4; k++)
{
int x9=E.x+dx[k];
int y9=E.y+dy[k];
if(!X[x9][y9])
{
X[x9][y9]=X[E.x][E.y]+1;
C[++sc].x=x9;
C[sc].y=y9;
}
}
}
}
void afisare()
{
int mv=1000000,mx=0,my=0;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
if(R[i][j]==J[i][j] && R[i][j]>0 && R[i][j]<mv)
{
mv=R[i][j];
mx=i;
my=j;
}
fout<<mv-1<<' '<<mx<<' '<<my<<'\n';
}
int main()
{
citire();
lee(R,xr,yr);
lee(J,xj,yj);
afisare();
return 0;
}