Pagini recente » Cod sursa (job #1023265) | Cod sursa (job #1182192) | Cod sursa (job #1870079) | Cod sursa (job #1583896) | Cod sursa (job #1370445)
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
const int dx[]={0,1,0,-1,1,1,-1,-1};
const int dy[]={1,0,-1,0,1,-1,1,-1};
int a[101][101],b[101][101],i,j,Min,n,m,l,c,l1,c1,l2,c2,x,y,p,u,q[2][10100],sollin,solcol;
char x1,vect[1001];
int main()
{
sollin=solcol=Min=1500;
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++)
{
fin.getline(vect,1000);
for(j=0;j<m;j++)
{
if(vect[j]=='R')
{
l1=i;
c1=j+1;
a[i][j+1]=1;
b[i][j+1]=1;
}
if(vect[j]=='J')
{
l2=i;
c2=j+1;
a[i][j+1]=1;
b[i][j+1]=1;
}
if(vect[j]=='X')
{
a[i][j+1]=-1;
b[i][j+1]=-1;
}
}
}
u=p=1;
q[0][1]=l1;
q[1][1]=c1;
while(p<=u)
{
x=q[0][p];
y=q[1][p];
for(i=1;i<=7;i++)
{
l=x+dx[i];
c=y+dy[i];
if(a[l][c]==0&&l>=1&&l<=n&&c>=1&&c<=m)
{
a[l][c]=a[x][y]+1;
q[0][++u]=l;
q[1][u]=c;
}
}
p++;
}
u=p=1;
q[0][1]=l2;
q[1][1]=c2;
while(p<=u)
{
x=q[0][p];
y=q[1][p];
for(i=1;i<=7;i++)
{
l=x+dx[i];
c=y+dy[i];
if(b[l][c]==0&&l>=1&&l<=n&&c>=1&&c<=m)
{
b[l][c]=b[x][y]+1;
q[0][++u]=l;
q[1][u]=c;
if(b[l][c]==a[l][c])
if(b[l][c]<=Min)
{
if(b[l][c]==Min)
{
if(l==sollin)
if(c<solcol)
solcol=c;
if(l<sollin)
{
sollin=l;
solcol=c;
}
}
if(b[l][c]<Min)
{
Min=b[l][c];
sollin=l;
solcol=c;
}
}
}
}
p++;
}
fout<<Min<<" "<<sollin<<" "<<solcol;
return 0;
}