Pagini recente » Cod sursa (job #3290829) | Cod sursa (job #845809) | Cod sursa (job #2184991) | Cod sursa (job #1386830) | Cod sursa (job #1989632)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
#define mp make_pair
#define f first
#define s second
int n,m,i,j,a[101][101],Min=INT_MAX;
int R[101][101],J[101][101];
short dx[]={-1,-1,-1,0,1,1,1,0},dy[]={-1,0,1,1,1,0,-1,-1};
pair <int,int> ro,ju,x,poz;
char c;
queue < pair <int,int> > q;
int main()
{
fin>>n>>m;
fin>>noskipws>>c;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
fin>>noskipws>>c;
if(c=='R')
{
ro.f=i;ro.s=j;a[i][j]=0;
}
else if(c=='J')
{
ju.f=i;ju.s=j;a[i][j]=0;
}
else if(c=='X')
a[i][j]=0;
else if(c==' ')
a[i][j]=1;
}
fin>>noskipws>>c;
}
q.push(ro);
R[ro.f][ro.s]=1;
while(!q.empty())
{
x=q.front();
q.pop();
for(i=0;i<8;i++)
{
if(a[x.f+dx[i]][x.s+dy[i]]==1&&R[x.f+dx[i]][x.s+dy[i]]==0)
{
R[x.f+dx[i]][x.s+dy[i]]=1+R[x.f][x.s];
q.push(mp(x.f+dx[i],x.s+dy[i]));
}
}
}
q.push(ju);
J[ju.f][ju.s]=1;
while(!q.empty())
{
x=q.front();
q.pop();
for(i=0;i<8;i++)
{
if(a[x.f+dx[i]][x.s+dy[i]]==1&&J[x.f+dx[i]][x.s+dy[i]]==0)
{
J[x.f+dx[i]][x.s+dy[i]]=1+J[x.f][x.s];
q.push(mp(x.f+dx[i],x.s+dy[i]));
}
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(R[i][j]==J[i][j]&&R[i][j]&&R[i][j]<Min)
{
Min=R[i][j];
poz.f=i;
poz.s=j;
}
}
fout<<Min<<" "<<poz.f<<" "<<poz.s<<'\n';
return 0;
}