Pagini recente » Cod sursa (job #75423) | Cod sursa (job #2448738) | Cod sursa (job #415202) | Cod sursa (job #1416981) | Cod sursa (job #2952130)
#include <fstream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
ifstream cin("rj.in");
ofstream cout("rj.out");
int n,m,a[1005][1005],g1,g2,b[1005][1005];
int dl[]={-1,0,1,0,-1,1,1,-1},dc[]={0,1,0,-1,1,-1,1,-1};
struct pozitie
{
int lin,col;
};
queue <pozitie> c;
pozitie R,J;
void citire()
{
char x;
int i,j;
cin>>n>>m;
for(i=1;i<=n;i++)
{
cin.get();
for(j=1;j<=m;j++)
{
cin.get(x);
if(x==' ')
a[i][j]=b[i][j]=0;
if(x=='X')
a[i][j]=b[i][j]=-1;
if(x=='R')
{
a[i][j]=1;
R.lin=i;
R.col=j;
}
if(x=='J')
{
b[i][j]=1;
J.lin=i;
J.col=j;
}
}
}
}
void lee(int lin,int col,int a[1005][1005])
{
pozitie poz1,poz2;
c.push({lin,col});
while(!c.empty())
{
poz1=c.front();
c.pop();
for(int i=0;i<8;i++)
{
poz2.lin=poz1.lin+dl[i];
poz2.col=poz1.col+dc[i];
if(poz2.lin>=1&&poz2.lin<=n&&poz2.col>=1&&poz2.col<=m&&a[poz2.lin][poz2.col]==0)
{
a[poz2.lin][poz2.col]=a[poz1.lin][poz1.col]+1;
c.push(poz2);
}
}
}
}
void afisare(int a[1005][1005])
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<"\n";
}
}
int main()
{
int js,is,gmin=100000000;
citire();
lee(R.lin,R.col,a);
lee(J.lin,J.col,b);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]==b[i][j]&&a[i][j]>0&&a[i][j]<gmin)
{
gmin=a[i][j];
is=i;
js=j;
}
cout<<gmin<<" "<<is<<" "<<js;
return 0;
}