Pagini recente » Cod sursa (job #774892) | Cod sursa (job #1589975) | Cod sursa (job #1331624) | Cod sursa (job #2169178) | Cod sursa (job #1320747)
#include <cstdio>
FILE* in=fopen("portal3.in","r");
FILE* out=fopen("portal3.out","w");
struct port{
int x,y;
int gx,gy;
int cost;
int comp;
} v[8];
bool use[8];
long long rez;
long long mod(long long x)
{
return x<0?-x:x;
}
void back(int p, long long act)
{
if(p==7)
{
if(act<rez)
rez=act;
return;
}
for(int i=1; i<=7; i++)
{
if(use[i]==0)
{
use[i]=1;
use[v[i].comp]=1;
back(v[i].comp,act+v[i].cost+mod(v[p].x-v[i].x)+mod(v[p].y-v[i].y));
use[i]=0;
use[v[i].comp]=0;
}
}
}
void rezolv()
{
int n,m;
fscanf(in,"%d%d",&n,&m);
int a,b,c,d,e;
rez=2000000000;
for(int i=1; i<=3; i++)
{
fscanf(in,"%d%d%d%d%d",&a,&b,&c,&d,&e);
v[i*2-1].x=a;
v[i*2-1].y=b;
v[i*2-1].gx=c;
v[i*2-1].gy=d;
v[i*2-1].cost=e;
v[i*2-1].comp=i*2;
v[i*2].gx=a;
v[i*2].gy=b;
v[i*2].x=c;
v[i*2].y=d;
v[i*2].cost=e;
v[i*2].comp=i*2-1;
}
v[0].x=0;
v[0].y=0;
v[0].gx=0;
v[0].gy=0;
v[0].cost=0;
v[0].comp=0;
v[7].x=n;
v[7].y=m;
v[7].gx=n;
v[7].gy=m;
v[7].cost=0;
v[7].comp=7;
use[0]=1;
back(0,0);
use[0]=0;
fprintf(out,"%lld\n",rez);
}
int main()
{
int t;
fscanf(in,"%d",&t);
for(int i=1; i<=t; i++)
{
rezolv();
}
return 0;
}