Pagini recente » Cod sursa (job #980648) | Cod sursa (job #1251595) | Cod sursa (job #466002) | Cod sursa (job #2853604) | Cod sursa (job #119590)
Cod sursa(job #119590)
#include<stdio.h>
long int m,n,i,k,xr,yr,xj,yj,xsol,ysol,r[110][110],j[110][110],prim,ultim,
cx[14000],cy[14000],cx1,cy1,tmin,ok,jj,tr,tj,a[110][110],aux;
char *p,pp[120],caux;
int main()
{
FILE *f,*g;f=fopen("rj.in","r");g=fopen("rj.out","w");
fscanf(f,"%ld%ld",&n,&m);
p=&pp[0];fgets(p,114,f);
for(i=1;i<=n;i++)
{ fgets(p,114,f);
for(k=1;k<=m;k++)
{ if(p[k-1]=='X')a[i][k]=1;
if(p[k-1]=='R'){xr=i;yr=k;}
if(p[k-1]=='J'){xj=i;yj=k;}
r[i][k]=-1;j[i][k]=-1;
}
}
for(i=0;i<=n+1;i++)
{ a[i][0]=1;a[i][m+1]=1;r[i][0]=-1;r[i][m+1]=-1;j[i][0]=-1;j[i][m+1]=-1;}
for(k=0;k<=m+1;k++)
{ a[0][k]=1;a[n+1][k]=1;r[0][k]=-1;r[n+1][k]=-1;j[0][k]=-1;j[n+1][k]=-1;}
r[xr][yr]=1;
ultim=1;cx[1]=xr;cy[1]=yr;
for(prim=1;prim<=ultim;prim++)
{ cx1=cx[prim];cy1=cy[prim];
if(!a[cx1+1][cy1+1])if(r[cx1+1][cy1+1]==-1){r[cx1+1][cy1+1]=r[cx1][cy1]+1;ultim++;cx[ultim]=cx1+1;cy[ultim]=cy1+1;}
if(!a[cx1+1][cy1-1])if(r[cx1+1][cy1-1]==-1){r[cx1+1][cy1-1]=r[cx1][cy1]+1;ultim++;cx[ultim]=cx1+1;cy[ultim]=cy1-1;}
if(!a[cx1-1][cy1+1])if(r[cx1-1][cy1+1]==-1){r[cx1-1][cy1+1]=r[cx1][cy1]+1;ultim++;cx[ultim]=cx1-1;cy[ultim]=cy1+1;}
if(!a[cx1-1][cy1-1])if(r[cx1-1][cy1-1]==-1){r[cx1-1][cy1-1]=r[cx1][cy1]+1;ultim++;cx[ultim]=cx1-1;cy[ultim]=cy1-1;}
if(!a[cx1+1][cy1]) if(r[cx1+1][cy1]==-1) {r[cx1+1][cy1]=r[cx1][cy1]+1; ultim++;cx[ultim]=cx1+1;cy[ultim]=cy1; }
if(!a[cx1-1][cy1]) if(r[cx1-1][cy1]==-1) {r[cx1-1][cy1]=r[cx1][cy1]+1; ultim++;cx[ultim]=cx1-1;cy[ultim]=cy1; }
if(!a[cx1][cy1+1]) if(r[cx1][cy1+1]==-1) {r[cx1][cy1+1]=r[cx1][cy1]+1; ultim++;cx[ultim]=cx1; cy[ultim]=cy1+1;}
if(!a[cx1][cy1-1]) if(r[cx1][cy1-1]==-1) {r[cx1][cy1-1]=r[cx1][cy1]+1; ultim++;cx[ultim]=cx1; cy[ultim]=cy1-1;}
}
j[xj][yj]=1;
ultim=1;cx[1]=xj;cy[1]=yj;
for(prim=1;prim<=ultim;prim++)
{ cx1=cx[prim];cy1=cy[prim];
if(!a[cx1+1][cy1+1])if(j[cx1+1][cy1+1]==-1){j[cx1+1][cy1+1]=j[cx1][cy1]+1;ultim++;cx[ultim]=cx1+1;cy[ultim]=cy1+1;}
if(!a[cx1+1][cy1-1])if(j[cx1+1][cy1-1]==-1){j[cx1+1][cy1-1]=j[cx1][cy1]+1;ultim++;cx[ultim]=cx1+1;cy[ultim]=cy1-1;}
if(!a[cx1-1][cy1+1])if(j[cx1-1][cy1+1]==-1){j[cx1-1][cy1+1]=j[cx1][cy1]+1;ultim++;cx[ultim]=cx1-1;cy[ultim]=cy1+1;}
if(!a[cx1-1][cy1-1])if(j[cx1-1][cy1-1]==-1){j[cx1-1][cy1-1]=j[cx1][cy1]+1;ultim++;cx[ultim]=cx1-1;cy[ultim]=cy1-1;}
if(!a[cx1+1][cy1]) if(j[cx1+1][cy1]==-1) {j[cx1+1][cy1]=j[cx1][cy1]+1; ultim++;cx[ultim]=cx1+1;cy[ultim]=cy1; }
if(!a[cx1-1][cy1]) if(j[cx1-1][cy1]==-1) {j[cx1-1][cy1]=j[cx1][cy1]+1; ultim++;cx[ultim]=cx1-1;cy[ultim]=cy1; }
if(!a[cx1][cy1+1]) if(j[cx1][cy1+1]==-1) {j[cx1][cy1+1]=j[cx1][cy1]+1; ultim++;cx[ultim]=cx1; cy[ultim]=cy1+1;}
if(!a[cx1][cy1-1]) if(j[cx1][cy1-1]==-1) {j[cx1][cy1-1]=j[cx1][cy1]+1; ultim++;cx[ultim]=cx1; cy[ultim]=cy1-1;}
}
tmin=m*n+5;
for(i=1;i<=n;i++)
{ for(k=1;k<=m;k++)
{ tr=r[i][k];
tj=j[i][k];
if(tr==tj)
if(tr!=-1)
if(tr<tmin)
{tmin=tr;
xsol=i;
ysol=k;
}
}
}
fprintf(g,"%ld %ld %ld\n",tmin,xsol,ysol);
fcloseall();
return 0;
}