Cod sursa(job #254319)

Utilizator ioraIoana Radu iora Data 7 februarie 2009 11:10:41
Problema Kdrum Scor 0
Compilator cpp Status done
Runda Stelele Informaticii 2009, clasele 9-10, ziua 2 Marime 0.8 kb
#include<stdio.h>
struct QUEUE
{
  int p,l,x,y;
};
QUEUE q[200000];
int x1,y1,x2,y2,xx,yy,k,min,n,m,i,j,u,p,c;
long a[51][51];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int main()
{
	freopen("kdrum.in","r",stdin);
	freopen("kdrum.out","w",stdout);

	scanf("%d%d%d",&n,&m,&k);
	scanf("%d%d%d%d",&x1,&y1,&x2,&y2);

	for(i=1;i<=n;++i)
	  for(j=1;j<=n;++j)
		scanf("%ld",&a[i][j]);

	q[1].p=0;
	p=u=1;
	q[1].l=1;
	q[1].x=x1;
	q[1].y=y1;
	min=2501;
	while(p<=u||(q[p].x==x2&&q[p].y==y2))
	{
	   for(i=0;i<=3;++i)
	   {
		 xx=q[p].x+dx[i];
		 yy=q[p].y+dy[i];
		 if(a[xx][yy]&&q[p].l<min)
		 {
		 u++;
		 q[u].p=p;
		 q[u].l=q[p].l+1;
		 q[u].x=xx;
		 q[u].y=yy;
		 if(xx==x2&&yy==y2)
			 if(q[u].l<min) min=q[u].l;
		 }
	   }
	   p++;
	}
	printf("%d\n",min);
 return 0;
}