Cod sursa(job #122699)

Utilizator znakeuJurba Andrei znakeu Data 13 ianuarie 2008 15:05:24
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
struct gaina
{
	int x,y;	
};
int d[180][180];
gaina cdg[40000];
int n,m,x1,y1,x2,y2;
int dl[]={-1,0,1,0};
int dc[]={0,1,0,-1};

int main()
{
	FILE *in  = fopen("alee.in","r");
	FILE *out = fopen("alee.out","w");
	
	int x,i,y,j;
	
	fscanf(in,"%d%d",&n,&m);
	for (i=0; i<=n+1; i++)
	{
		d[0][i]=-1;
		d[i][0]=-1;
		d[n+1][i]=-1;
		d[i][n+1]=-1;		
	}
	
	for (i=0; i<m; i++)
	{
		fscanf(in,"%d%d",&x,&y);
		d[x][y]=-1;		
	}
	fscanf(in,"%d%d%d%d",&x1,&y1,&x2,&y2);
	
	m=1;
	cdg[0].x=x1;
	cdg[0].y=y1;
	
	for (i=0; i<m; i++)
		for (j=0; j<4; j++)
			if(d[cdg[i].x+dl[j]][cdg[i].y+dc[j]]==0)
			{
				cdg[m].x=cdg[i].x+dl[j];
				cdg[m].y=cdg[i].y+dc[j];
				m++;
				d[cdg[i].x+dl[j]][cdg[i].y+dc[j]]=d[cdg[i].x][cdg[i].y]+1;				
			}
	fprintf(out,"%d\n",d[x2][y2]+1);
	
	
	fclose(in);
	fclose(out);
	return 0;
}