Pagini recente » Cod sursa (job #350734) | Cod sursa (job #1143723) | Cod sursa (job #2198113) | Cod sursa (job #735070) | Cod sursa (job #1518498)
#include <fstream>
#include<queue>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,i,j,romeo[105][105],julieta[105][105],finalx,finaly,minim;
char Map[105];
const int Ox[]={0,0,1,1,1,-1,-1,-1};
const int Oy[]={1,-1,0,-1,1,-1,0,1};
pair<int,int> startr,startj,now,next;
queue<pair<int,int> > coada;
bool verif(pair<int,int> z)
{
if(z. first>0 && z. first<=n &&z.second>0 && z.second<=m)
return 1;
return 0;
}
void lee(pair<int,int> start,int Mapp[105][105])
{
coada.push(start);
Mapp[start. first][start.second]=1;
while(!coada.empty())
{
now=coada.front();
for(i=0;i<8;i++)
{
next. first=now.first+Ox[i];
next.second=now.second+Oy[i];
if(Mapp[next. first][next.second]==0 && verif(next)==1)
{
Mapp[next. first][next.second]= Mapp[now. first][now.second]+1;
coada.push(next);
}
}
coada.pop();
}
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin.get();
fin.get(Map,105);
for(j=1;j<=m;j++)
{
if(Map[j-1]=='X')
romeo[i][j]=julieta[i][j]=-1;
if(Map[j-1]=='R')
{
romeo[i][j]=1;
startr=make_pair(i,j);
}
if(Map[j-1]=='J')
{
julieta[i][j]=1;
startj=make_pair(i,j);
}
}
}
lee(startr,romeo);
lee(startj,julieta);
minim=1000000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(romeo[i][j]==julieta[i][j] && romeo[i][j]>0 && minim>romeo[i][j])
{
minim=romeo[i][j];
finalx=i;
finaly=j;
}
fout<<minim<<" "<<finalx<<" "<<finaly;
return 0;
}