Pagini recente » Cod sursa (job #2979934) | Cod sursa (job #106295) | Cod sursa (job #2512231) | Cod sursa (job #1882463) | Cod sursa (job #2950182)
#include <fstream>
#include <queue>
#include <climits>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m;
int v[105][105];
int m1[105][105];
int m2[105][105];
char x[105];
int dx[]={1,1,1,-1,-1,-1,0,0};
int dy[]={-1,0,1,1,-1,0,1,-1};
struct poz{
int x;
int y;}ju,r;
queue <poz> q;
int minim = INT_MAX;
poz minpoz;
int main()
{
fin>>n>>m;
fin.getline(x+1,105);
for(int i=1;i<=n;i++)
{
fin.getline(x+1,105);
for(int j=1;j<=m;j++)
{
if(x[j]==' ')
{
v[i][j]=1;
}
else if (x[j]=='X')
v[i][j]=0;
else if (x[j]=='R')
{
v[i][j]=1;
r.x=i;
r.y=j;
m1[i][j]=1;
}
else if (x[j]=='J')
{
v[i][j]=1;
ju.x=i;
ju.y=j;
m2[i][j]=1;
}
}
}
q.push(r);
while(!q.empty())
{
for(int d=0;d<=7;d++)
{
int l = dx[d] + q.front().x;
int c = dy[d] + q.front().y;
if(v[l][c] && !m1[l][c])
{
m1[l][c]=m1[q.front().x][q.front().y]+1;
q.push({l,c});
}
}
q.pop();
}
/**
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
fout<<m1[i][j]<<' ';
}
fout<<'\n';
}**/
q.push(ju);
while(!q.empty())
{
for(int d=0;d<=7;d++)
{
int l = dx[d] + q.front().x;
int c = dy[d] + q.front().y;
if(v[l][c] && !m2[l][c])
{
m2[l][c]=m2[q.front().x][q.front().y]+1;
q.push({l,c});
}
}
q.pop();
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(m1[i][j]==m2[i][j] && m1[i][j]<minim && m1[i][j])
{
minim=m1[i][j];
minpoz={i,j};
}
}
}
fout<<minim<<' '<<minpoz.x<<' '<<minpoz.y;
}