Cod sursa(job #266578)

Utilizator stefynr8Space Monkey stefynr8 Data 25 februarie 2009 20:12:06
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>

struct coada{
	     unsigned char l,c;
	    }c[16000];

int n,m,i,j,x,y,x1,y1,p,u,la,ca,lv,cv,min;
char dx[4]={-1, 0, 1, 0};
char dy[4]={0, 1, 0, -1};
int a[176][176];

int main()
{
  freopen("alee.in","r",stdin);
  freopen("alee.out","w",stdout);

  scanf("%d %d", &n, &m);
  for (i=1;i<=m;i++)
	{
	 scanf("%d %d", &x, &y);
	 a[x][y]=-1;
	}
  scanf("%d %d %d %d",&x,&y,&x1,&y1);
  for (i=0;i<=n+1;i++)
	{
	 a[0][i]=-1;
	 a[i][0]=-1;
	 a[n+1][i]=-1;
	 a[i][n+1]=-1;
	}
  a[x][y]=1;
  p=1; u=1;
  c[1].l=x;
  c[1].c=y;
  min=32000;
  while (p<=u)
	{
	 la=c[p].l;
	 ca=c[p].c;
	 for (i=0;i<4;i++)
		{
		 lv=la+dx[i];
		 cv=ca+dy[i];
		 if (a[lv][cv]==0)
			{
			 a[lv][cv]=a[la][ca]+1;
			 if (a[lv][cv]<min && lv==x1 && cv==y1)
				min=a[lv][cv];
			 u++;
			 c[u].l=lv;
			 c[u].c=cv;
			}
		}
	 p++;
	}
  printf("%d", min);

  return 0;
}