Pagini recente » Cod sursa (job #2404929) | Cod sursa (job #2027002) | Cod sursa (job #72709) | Cod sursa (job #2567100) | Cod sursa (job #99691)
Cod sursa(job #99691)
#include<stdio.h>
#include<values.h>
int main()
{typedef struct {int lin,col;}RJ;
RJ x,x1,y,C[10100];
int a[100][101],b[100][101];
char q;
int i,j,n,m,d[8]={-1,-1,0,1,1,1,0,-1},e[8]={0,1,1,1,0,-1,-1,-1},p,u,min=MAXINT;
FILE*f,*g;
f=fopen("rj.in","r");
g=fopen("rj.out","w");
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{fscanf(f,"%c",&q);
if(q!='\n') {if(q=='X') a[i][j]=-1;
else if(q==' ') a[i][j]=0;
b[i][j]=a[i][j];
if(q=='R') {x.lin=i;x.col=j;b[i][j]=0;a[i][j]=1;}
if(q=='J') {x1.lin=i;x1.col=j;b[i][j]=1;a[i][j]=b[i][j]-1;}}
else j--;}
for(i=0;i<=n+1;i++)
a[i][0]=b[i][0]=a[i][m+1]=b[i][m+1]=-1;
for(j=0;j<=m+1;j++)
a[0][j]=b[0][j]=a[n+1][j]=b[n+1][j]=-1;
p=u=1;
C[p]=x;
a[x.lin][x.col]=1;
while(p<=u)
{x=C[p++];
for(i=0;i<=7;i++)
{y.lin=x.lin+d[i];
y.col=x.col+e[i];
if(a[y.lin][y.col]==0) {a[y.lin][y.col]=a[x.lin][x.col]+1;
C[++u]=y;}
}
}
p=u=1;
C[p]=x1;
b[x1.lin][x1.col]=1;
while(p<=u)
{x1=C[p++];
for(i=0;i<=7;i++)
{y.lin=x1.lin+d[i];
y.col=x1.col+e[i];
if(b[y.lin][y.col]==0) {b[y.lin][y.col]=b[x1.lin][x1.col]+1;
C[++u]=y;}
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if((a[i][j]!=-1)&&(a[i][j]!=0))
if(a[i][j]==b[i][j]&&a[i][j]<min) {min=a[i][j];
p=i;
u=j;}
fprintf(g,"%d %d %d",min,p,u);
fclose(f);
fclose(g);
return 0;
}