Pagini recente » Cod sursa (job #1853704) | Cod sursa (job #2893483) | Cod sursa (job #1448752) | Cod sursa (job #1916474) | Cod sursa (job #1023375)
#include <fstream>
#include <cstring>
#include <cstdio>
using namespace std;
short n,m;
char s[102];
bool v[105][105];
short mr[105][105];
short mj[105][105];
short xmin,ymin,tmin=30000;
int k;
short st[3][10010];
short x[9]= {-1,-1,0,1,1,1,0,-1};
short y[9]= {0,1,1,1,0,-1,-1,-1};
ifstream in("rj.in");
ofstream out("rj.out");
int main()
{
short i,j;
short rx,ry;
short jx,jy;
short k;
in>>n>>m;
for(i=0; i<n; i++)
{
in.get();
in.get(s,102);
for(j=0; j<m; j++)
{
if(s[j]==0||s[j]==' ')
v[i+1][j+1]=1;
else
{
if(s[j]=='R')
rx=i+1,ry=j+1;
if(s[j]=='J')
jx=i+1,jy=j+1;
v[i+1][j+1]=0;
}
mr[i+1][j+1]=30000;
mj[i+1][j+1]=30000;
}
}
k=1;
st[0][1]=rx;
st[1][1]=ry;
st[2][1]=1;
for(i=1; i<=k; i++)
{
if(mr[st[0][i]][st[1][i]]>st[2][i])
{
mr[st[0][i]][st[1][i]]=st[2][i];
for(j=0; j<=7; j++)
if(v[st[0][i]+x[j]][st[1][i]+y[j]]==1&&mr[st[0][i]+x[j]][st[1][i]+y[j]]>st[2][i]+1)
{
k++;
st[0][k]=st[0][i]+x[j];
st[1][k]=st[1][i]+y[j];
st[2][k]=st[2][i]+1;
}
}
}
k=1;
st[0][1]=jx;
st[1][1]=jy;
st[2][1]=1;
for(i=1; i<=k; i++)
{
if(mj[st[0][i]][st[1][i]]>st[2][i])
{
mj[st[0][i]][st[1][i]]=st[2][i];
for(j=0; j<=7; j++)
if(v[st[0][i]+x[j]][st[1][i]+y[j]]==1&&mj[st[0][i]+x[j]][st[1][i]+y[j]]>st[2][i]+1)
{
k++;
st[0][k]=st[0][i]+x[j];
st[1][k]=st[1][i]+y[j];
st[2][k]=st[2][i]+1;
}
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(mr[i][j]==mj[i][j])
if(mr[i][j]<tmin)
{
tmin=mr[i][j];
xmin=i;
ymin=j;
}
out<<tmin<<' '<<xmin<<' '<<ymin;
/**
out<<"\n\n\n";
out.close();
FILE *a;
a=fopen("rj.out","w");
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
fprintf(a,"%5d ",mr[i][j]);
fprintf(a,"\n");
}
fprintf(a,"\n");
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
fprintf(a,"%5d ",mj[i][j]);
fprintf(a,"\n");
}
**/
return 0;
}