Pagini recente » Cod sursa (job #2950416) | Cod sursa (job #368570) | Cod sursa (job #2224293) | Cod sursa (job #645860) | Cod sursa (job #432513)
Cod sursa(job #432513)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
const int dab[8]={0,1,1,1,0,-1,-1,-1};
const int dor[8]={1,1,0,-1,-1,-1,0,1};
struct bfs
{
int absc,ordon;
}t[10001],x,y;
char v[100][100];
int ro[100][100],ju[100][100],n,m,minim=10001,absc,ordon,a1,b1,a2,b2;
void lee(int absc, int ordon, int c[100][100])
{
int a=1,b=1,i;
t[1].absc=absc;
t[1].ordon=ordon;
while(a<=b)
{
x=t[a++];
for(i=0;i<8;i++)
{
y.absc=x.absc+dab[i];
y.ordon=x.ordon+dor[i];
if(v[y.absc][y.ordon]==' '&&(c[y.absc][y.ordon]==0||(c[y.absc][y.ordon]>0&&c[y.absc][y.ordon]>c[x.absc][x.ordon]+1)))
{
t[++b]=y;
c[y.absc][y.ordon]=c[x.absc][x.ordon]+1;
}
}
}
}
int main()
{
int i,j;
f>>n>>m;
f.getline(v[0],100);
for(i=0;i<n;i++)
{
f.getline(v[i],100);
for(j=0;j<m;j++)
{
if(v[i][j]=='R')
{
ro[i][j]=1;
a1=i;
b1=j;
}
else
if(v[i][j]=='J')
{
ju[i][j]=1;
a2=i;
b2=j;
}
}
}
lee(a1,b1,ro);
lee(a2,b2,ju);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(v[i][j]==' '&&ro[i][j]==ju[i][j]&&ro[i][j]&&minim>ro[i][j])
{
minim=ro[i][j];
absc=i;
ordon=j;
}
}
}
g<<minim<<" "<<absc+1<<" "<<ordon+1;
return 0;
}