Pagini recente » Cod sursa (job #1417715) | Cod sursa (job #748176) | Cod sursa (job #3206452) | Cod sursa (job #420493) | Cod sursa (job #583702)
Cod sursa(job #583702)
#include<stdio.h>
int v[101][101],cx[10001],cy[10001];
int main()
{
int n,m,i,j,min=9999,k=0,a,b,x,y,st,fi,d,ok=0;
char c;
FILE *f=fopen("rj.in","r");
FILE *g=fopen("rj.out","w");
fscanf(f,"%d %d%c",&n,&m,&c);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{
fscanf(f,"%c",&c);
if (c=='X') v[i][j]=1;
if (c==' ') v[i][j]=0;
if (c=='R') {a=i;b=j;}
if (c=='J') {x=i;y=j;}
if (c=='\n') j--;
}
st=fi=1;
v[a][b]=1;
cx[1]=a;
cy[1]=b;
k=1;
do
{
ok=1;
d=0;
for (i=st;i<=fi;i++)
{
if (cx[i]<n)if (v[cx[i]+1][cy[i]]==0) {v[cx[i]+1][cy[i]]=v[cx[i]][cy[i]]+1;ok=0;d++;k++;cx[k]=cx[i]+1;cy[k]=cy[i];}
if (cy[i]<m)if (v[cx[i]][cy[i]+1]==0) {v[cx[i]][cy[i]+1]=v[cx[i]][cy[i]]+1;ok=0;d++;k++;cx[k]=cx[i];cy[k]=cy[i]+1;}
if (cx[i]>1)if (v[cx[i]-1][cy[i]]==0) {v[cx[i]-1][cy[i]]=v[cx[i]][cy[i]]+1;ok=0;d++;k++;cx[k]=cx[i]-1;cy[k]=cy[i];}
if (cy[i]>1)if (v[cx[i]][cy[i]-1]==0) {v[cx[i]][cy[i]-1]=v[cx[i]][cy[i]]+1;ok=0;d++;k++;cx[k]=cx[i];cy[k]=cy[i]-1;}
}
st=fi+1;
fi+=d;
}
while (ok==0);
fprintf(g,"%d ",(v[x][y]-1)/2);
k=1;
while (k-1!=(v[x][y]-1)/2)
{
if (v[a+1][b]==k+1) {a++;k++;}
if (k-1==(v[x][y]-1)/2) break;
if (v[a][b+1]==k+1) {b++;k++;}
if (k-1==(v[x][y]-1)/2) break;
if (v[a-1][b]==k+1) {a--;k++;}
if (k-1==(v[x][y]-1)/2) break;
if (v[a+1][b-1]==k+1) {b--;k++;}
if (k-1==(v[x][y]-1)/2) break;
}
fprintf(g,"%d %d",a,b);
return 0;
}