Mai intai trebuie sa te autentifici.

Cod sursa(job #102911)

Utilizator DjSefuWrong name DjSefu Data 14 noiembrie 2007 19:42:02
Problema Car Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
FILE *f=fopen("car.in","r"),
     *g=fopen("car.out","w");
int a[501][501],i,j,n,m,dx[8]={-1,-1,-1,0,0,1,1,1},dy[8]={-1,0,1,-1,1,-1,0,1},ix,iy,fx,fy,k,min=2501;
void mer(int x,int y)
{ if(a[x][y]==0) { a[x][y]=--k;
		   if(x==fx&&y==fy) if(-k<min) min=-k;
				    else --k,a[x][y]=0;
		   else if(-k<min){ for(i=0;i<8;++i) mer(x+dx[i],y+dy[i]);
				   a[x][y]=0;
				   ++k;
				 }
		 }
}
int main()
{ fscanf(f,"%d %d",&n,&m);
  fscanf(f,"%d %d %d %d",&ix,&iy,&fx,&fy);
  for(i=1;i<=n;++i) for(j=1;j<=m;++j) fscanf(f,"%d",&a[i][j]);
  for(i=0;i<=m+1;++i) a[0][i]=a[n+1][i]=1;
  for(i=0;i<=n+1;++i) a[i][0]=a[i][m+1]=1;
  mer(ix,iy);
  if(min<2501) fprintf(g,"%d\n",min);
  else fprintf(g,"-1\n");
  fclose(f);
  fclose(g);
  return 0;
}