Pagini recente » Cod sursa (job #2072451) | Cod sursa (job #375636) | Cod sursa (job #2198091) | Cod sursa (job #146948) | Cod sursa (job #1691874)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream fout("rj.out");
char love[150][150];
int rom[101][101],jul[101][101];
int n,m;
int vx[101*101],vy[101*101];
void distante(int x, int y, int mat[101][101])
{
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
mat[i][j]=-1;
mat[x][y]=0;
int p,u;
p=1;
u=0;
u++;
vx[u]=x;
vy[u]=y;
int dx[8]={-1,0,1,0,-1,-1,+1,+1};
int dy[8]={0,-1,0,1,-1,+1,-1,+1};
while(p<=u)
{
int cx=vx[p], cy=vy[p];
for(int i=0;i<=7;++i)
{
int cxnou,cynou;
cxnou=cx+dx[i];
cynou=cy+dy[i];
if(love[cxnou][cynou]==' ' && mat[cxnou][cynou]==-1)
{
mat[cxnou][cynou]=mat[cx][cy] + 1;
u++;
vx[u]=cxnou;
vy[u]=cynou;
}
}
++p;
}
}
int main()
{
f>>n>>m;
int i, j;
f.getline(love[0], m + 1);
for(i=1;i<=n;++i)
f.getline(love[i]+1,m+1);
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
{
if(love[i][j]=='R')
distante(i,j,rom);
if(love[i][j]=='J')
distante(i,j,jul);
}
int dmin=n*m +1, rx,ry;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
if(rom[i][j] > 0 && rom[i][j]==jul[i][j])
if(rom[i][j]<dmin)
{
dmin=rom[i][j];
rx=i;
ry=j;
}
fout<<dmin + 1<<" "<<rx<<" "<<ry;
return 0;
}