Pagini recente » Cod sursa (job #2465279) | Cod sursa (job #2838599) | Cod sursa (job #3284593) | Cod sursa (job #3185448) | Cod sursa (job #1149163)
#include <iostream>
#include <fstream>
using namespace std;
int a[103][103],r[103][103],jul[103][103];
int main()
{ifstream f("rj.in");
ofstream g("rj.out");
int n,m,a1,b,e,d,i,j,x,y,tmin;
char c;
f>>n>>m;
for(i=0;i<=m+1;i++)
a[0][i]=a[n+1][i]=-1;
for(j=0;j<=n+1;j++)
a[j][0]=a[j][m+1]=-1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{f.get(c);
if (c=='\n') f.get(c);
if (c=='X') a[i][j]=-1;
if(c==' ') a[i][j]=0;
if(c=='R') {a[i][j]=0;a1=i;b=j;}
if(c=='J') {a[i][j]=0;d=i;e=j;}
}
for(i=0;i<=n+1;i++)
for(j=0;j<=m+1;j++)
{r[i][j]=a[i][j];
jul[i][j]=a[i][j];
}
r[a1][b]=1;
jul[d][e]=1;
cout<<d<<" "<<e;
int dl[]={-1,0,1,0,-1,1,1,-1};
int dc[]={0,1,0,-1,1,1,-1,-1};
int prim=1;
int ultim=1;
struct celula{int lin,col;} z[31000],w[31000];
z[prim].lin=a1;
z[prim].col=b;
while(prim<=ultim)
{ celula p=z[prim];
for(int k=0;k<8;k++)
{
int xx=p.lin +dl[k];
int yy=p.col+dc[k];
if(r[xx][yy]==0){r[xx][yy]=r[p.lin][p.col]+1;
ultim++;
z[ultim].lin=xx;
z[ultim].col=yy;}
}
prim++;}
for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)
cout<<r[i][j]<<" ";
cout<<"\n";
}
prim=1;
ultim=1;
int xx=0;int yy=0;
w[prim].lin=d;
w[prim].col=e;
while(prim<=ultim)
{ celula p=w[prim];
for(int k=0;k<8;k++)
{
xx=p.lin +dl[k];
yy=p.col+dc[k];
if(jul[xx][yy]==0){jul[xx][yy]=jul[p.lin][p.col]+1;
ultim++;
w[ultim].lin=xx;
w[ultim].col=yy;}}
prim++;}
int min=10000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(r[i][j]==jul[i][j] && r[i][j]!=-1)
if(r[i][j]<min ){x=i;y=j;min=r[i][j];}
}
g<<x<<" "<<y<<" "<<min;
return 0;
}