Cod sursa(job #639739)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 23 noiembrie 2011 21:43:52
Problema Portal3 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<stdio.h>

FILE*f=fopen("portal3.in","r");
FILE*g=fopen("portal3.out","w");

int i,j,q,n,m;
int v[5][5],viz[5];

inline int abs ( int j ){
	if ( j < 0 )
		return -j;
	return j;
}

long long rec ( int x , int y ){
	long long local_best = abs(x-n) + abs(y-m),comp;
	for ( int i = 1 ; i <= 3 ; ++i ){
		if ( !viz[i] ){
			viz[i] = 1;
			comp = rec(v[i][1],v[i][2]);
			comp = comp + v[i][0] + abs(v[i][3]-x) + abs(v[i][4]-y);
			if ( local_best > comp )	local_best = comp;
			comp = rec(v[i][3],v[i][4]);
			comp = comp + v[i][0] + abs(v[i][1]-x) + abs(v[i][2]-y);
			if ( local_best > comp )	local_best = comp;
			viz[i] = 0;
		}
	}
	return local_best;
}

int main () {
	
	fscanf(f,"%d",&q);
	
	for ( i = 1 ; i <= q ; ++i ){
		fscanf(f,"%d %d",&n,&m);
		for ( j = 1 ; j <= 3 ; ++j ){
			fscanf(f,"%d %d %d %d %d",&v[j][1],&v[j][2],&v[j][3],&v[j][4],&v[j][0]);
		}
		fprintf(g,"%lld\n",rec(0,0));
	}
	
	
	
	fclose(f);
	fclose(g);
	
	return 0;
}