Pagini recente » Cod sursa (job #1377524) | Cod sursa (job #2171414) | Cod sursa (job #1963280) | Cod sursa (job #2216438) | Cod sursa (job #1632731)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int dl[]={-1,0,1,0},dc[]={0,1,0,-1},R[105][105],J[105][105],i,j,m,n,k,prim,ultim,mint;
char a[120];
struct lincol
{
int lin,col;
};
lincol C[101*101],pj,pr,p1,p,v;
void Af()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cout<<R[i][j]<<" ";
cout<<'\n';
}
}
int main()
{f>>n>>m;
f.get();
for(i=1;i<=n;i++)
{
f.get(a,m+1);
for(j=0;j<strlen(a);j++)
{
if(a[j]=='X')
{
R[i][j+1]=-1;
J[i][j+1]=-1;
}
if(a[j]=='R')
{
pr.lin=i;
pr.col=j+1;
}
if(a[j]=='J')
{
pj.lin=i;
pj.col=j+1;
}
}
f.get();
}
for(i=0;i<=n+1;i++)
{
R[i][m+1]=-1;
R[i][0]=-1;
J[i][m+1]=-1;
J[i][0]=-1;
}
for(i=0;i<=m+1;i++)
{
R[0][i]=-1;
R[n+1][i]=-1;
J[0][i]=-1;
J[n+1][i]=-1;
}
// LEE R
prim=ultim=0;
C[0]=pr;
R[pr.lin][pr.col]=1;
while(prim<=ultim&&!R[pj.lin][pj.col])
{
p=C[prim];
prim++;
for(k=0;k<4;k++)
{
v.lin=p.lin+dl[k];
v.col=p.col+dc[k];
if(R[v.lin][v.col]==0)
{
C[++ultim]=v;
R[v.lin][v.col]=R[p.lin][p.col]+1;
}
}
}
//
Af();
// LEE J
prim=ultim;
C[0]=pj;
J[pj.lin][pj.col]=1;
while(prim<=ultim&&!J[pr.lin][pr.col])
{
p=C[prim];
prim++;
for(k=0;k<4;k++)
{
v.lin=p.lin+dl[k];
v.col=p.col+dc[k];
if(!J[v.lin][v.col])
{
C[++ultim]=v;
J[v.lin][v.col]=J[p.lin][p.col]+1;
}
}
}
//
mint=99999999;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(R[i][j]>0&&R[i][j]==J[i][j])
if(R[i][j]<mint)
{
mint=R[i][j];
p1.lin=i;
p1.col=j;
}
}
g<<R[p1.lin][p1.col]-1<<" "<<p1.lin<<" "<<p1.col;
return 0;
}