Pagini recente » Cod sursa (job #2209300) | Cod sursa (job #2806109) | Cod sursa (job #1692751) | Cod sursa (job #2420409) | Cod sursa (job #1518384)
#include<fstream>
#include<queue>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n,m,romeo[101][101],julieta[101][101];
int axaOx[]={-1,-1,-1,0,1,1,1,0};
int axaOy[]={-1,0,1,1,1,0,-1,-1};
char Map[101][101];
pair <int, int> promeo,pjulieta,Final;
void full(int sizze[101][101])
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
sizze[i][j]=n*m;
}
void lee(int sizze[101][101],int x,int y)
{
int k,i,j;
queue < pair<int, int> > q;
q.push(make_pair(x,y));
sizze[x][y]=0;
while(q.size()>0)
{
x=q.front().first;
y=q.front().second;
q.pop();
for(k=0;k<8;k++)
{
i=x+ axaOx[k];
j=y+ axaOy[k];
if(i>=0 && i<n && j>=0 && j<m && Map[i][j]!='X' && sizze[i][j]==n*m)
{
sizze[i][j]=sizze[x][y]+1;
q.push(make_pair(i,j));
}
}
}
}
int main()
{
int i,j;
fin>>n>>m;
for(i=0;i<n;i++) fin.getline(Map[i],105);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(Map[i][j]=='R')
promeo=make_pair(i,j);
if(Map[i][j]=='J')
pjulieta=make_pair(i,j);
}
//full(romeo);
//full(julieta);
lee(romeo,promeo.first,promeo.second);
lee(julieta,pjulieta.first,pjulieta.second);
int Min=n*m;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(romeo[i][j]==julieta[i][j] && romeo[i][j]<Min) { Min=romeo[i][j]; Final=make_pair(i,j); }
}
fout<<Min+3<<Final.first+3<<Final.second+2;
return 0;
}