Pagini recente » Cod sursa (job #502195) | Cod sursa (job #674109) | Cod sursa (job #2727403) | Cod sursa (job #2947886) | Cod sursa (job #2133366)
#include <iostream>
#include <fstream>
#include <queue>
int dl[4]={-1,0,1,0};
int dc[4]={0,1,0,-1};
using namespace std;
ifstream fi("rj.in");
ofstream fo("rj.out");
char A[101][101];
int R[101][101],J[101][101],n,m,rt,ri,rj;
pair <int,int> ro;
pair <int,int> ju;
queue <pair <int,int> > Q;
int main()
{
fi>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
fi>>A[i][j];
if(A[i][j]=='R')
ro={i,j};
if(A[i][j]=='J')
ju={i,j};
}
Q.push(ro);
while (!Q.empty())
{
pair <int, int> aux;
aux=Q.front();
Q.pop();
for (int d=0;d<=3;d++)
{
int lnou,cnou;
lnou=aux.first+dl[d];
cnou=aux.second+dc[d];
if (lnou>=1 && lnou<=n && cnou>=1 && cnou<=m)
if(R[lnou][cnou]!=0)
if(A[lnou][cnou]!='X')
{
R[lnou][cnou]=R[aux.first][aux.second]+1;
Q.push({lnou,cnou});
}
}
}
Q.push(ju);
while (!Q.empty())
{
pair <int, int> aux;
aux=Q.front();
Q.pop();
for (int d=0;d<=3;d++)
{
int lnou,cnou;
lnou=aux.first+dl[d];
cnou=aux.second+dc[d];
if (lnou>=1 && lnou<=n && cnou>=1 && cnou<=m)
if(J[lnou][cnou]!=0)
if(A[lnou][cnou]!='X')
{
J[lnou][cnou]=J[aux.first][aux.second]+1;
Q.push({lnou,cnou});
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(R[i][j]==J[i][j])
if(R[i][j]<rt)
{
rt=R[i][j];
ri=i;
rj=j;
}
}
}
fo<<rt<<" "<<ri<<" "<<rj;
fi.close();
fo.close();
return 0;
}