Cod sursa(job #495665)

Utilizator iconiKMircea Chirea iconiK Data 26 octombrie 2010 14:18:55
Problema Ciclu Eulerian Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>
 FILE *f, *g;
 int lc,cc,a[177][177],c[3][175*175+1],n,m,p,u,i,j,x1,x2,y1,y2,dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
 int main(){
	 f=fopen("alee.in","r");
	 g=fopen("alee.out","w");
	 fscanf(f,"%d%d",&n,&m);
	 for(i=1;i<=m;i++){
		 fscanf(f,"%d%d",&x1,&y1);
		 a[x1][y1]=1;
	 }
	 fscanf(f,"%d%d%d%d",&x1,&y1,&x2,&y2);
	for (i=0;i<=n+1;i++)
		a[0][i]=a[n+1][i]=a[i][0]=a[i][n+1]=1;
	p=u=1;
	c[0][p]=x1;
	c[1][p]=y1;
	c[2][p]=1;
	a[x1][y1]=1;
	while(p<=u){
		lc=c[0][p];
		cc=c[1][p];
		for(i=0;i<=3;i++)
			if(a[lc+dx[i]][cc+dy[i]]==0){
				u++;
				c[0][u]=lc+dx[i];
				c[1][u]=cc+dy[i];
				a[lc+dx[i]][cc+dy[i]]=1;
				c[2][u]=c[2][p]+1;
				if (a[x2][y2]==1){
					fprintf(g,"%d",c[2][u]);
					p=u;
					break;
				}
			}
			p++;
	}
	return 0;
 }