Pagini recente » Cod sursa (job #984509) | Cod sursa (job #291706) | Cod sursa (job #1077754) | Cod sursa (job #2788187) | Cod sursa (job #1375611)
#include <iostream>
#include <fstream>
#include <cstring>
#include <climits>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int m,n,i,j,xr,yr,xj,yj,dy[10000],dx[10000],p,u,x[8],y[8],mn,aj[102][102],ar[102][102];
char a[102][102];
bool gasit=false;
void citire()
{
f>>m>>n;
f.get();
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
a[i][j]=f.get();
if(a[i][j]=='J')
{
xj=i;
yj=j;
}
if(a[i][j]=='R')
{
xr=i;
yr=j;
}
}
f.get();
}
for(j=0;j<=n+1;j++)
{
a[0][j]='X';
a[m+1][j]='X';
}
for(i=1;i<=m;i++)
{
a[i][0]='X';
a[i][n+1]='X';
}
for(i=0;i<=m+1;i++)
for(j=0;j<=n+1;j++)
{
aj[i][j]=9;
ar[i][j]=9;
}
}
void afisare()
{
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
cout<<aj[i][j]<<" ";
cout<<endl;
}
}
void afisare1()
{
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
cout<<ar[i][j]<<" ";
cout<<endl;
}
}
void R()
{
x[0]=0;x[1]=1;x[2]=1;x[3]=1;x[4]=0;x[5]=-1;x[6]=-1;x[7]=-1;
y[0]=-1;y[1]=-1;y[2]=0;y[3]=1;y[4]=1;y[5]=1;y[6]=0;y[7]=-1;
p=1;u=1;
dx[p]=xr;
dy[p]=yr;
p=0;
ar[xr][yr]=1;
while(p<=u)
{
p++;
for(i=0;i<=7;i++)
if(a[dx[p]+x[i]][dy[p]+y[i]]==' '||a[dx[p]+x[i]][dy[p]+y[i]]=='J')
{
a[dx[p]+x[i]][dy[p]+y[i]]='y';
u++;
dx[u]=dx[p]+x[i];
dy[u]=dy[p]+y[i];
ar[dx[u]][dy[u]]=ar[dx[p]][dy[p]]+1;
}
}
}
void J()
{
x[0]=0;x[1]=1;x[2]=1;x[3]=1;x[4]=0;x[5]=-1;x[6]=-1;x[7]=-1;
y[0]=-1;y[1]=-1;y[2]=0;y[3]=1;y[4]=1;y[5]=1;y[6]=0;y[7]=-1;
p=1;u=1;
dx[p]=xj;
dy[p]=yj;
p=0;
aj[xj][yj]=1;
while(p<=u)
{
p++;
for(i=0;i<=7;i++)
if(a[dx[p]+x[i]][dy[p]+y[i]]=='y'||a[dx[p]+x[i]][dy[p]+y[i]]=='R')
{
a[dx[p]+x[i]][dy[p]+y[i]]=' ';
u++;
dx[u]=dx[p]+x[i];
dy[u]=dy[p]+y[i];
aj[dx[u]][dy[u]]=aj[dx[p]][dy[p]]+1;
}
}
aj[xj][yj]=1;
}
void verificare()
{
mn=INT_MAX;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(ar[i][j]==aj[i][j]&&mn>aj[i][j])
{
mn=ar[i][j];
xr=i;
yr=j;
}
g<<mn<<" "<<xr<<" "<<yr;
}
int main()
{
citire();
R();
J();
verificare();
}