Pagini recente » Cod sursa (job #98076) | Cod sursa (job #1949467) | Cod sursa (job #2298854) | Cod sursa (job #3243267) | Cod sursa (job #641470)
Cod sursa(job #641470)
#include <cstdio>
int abs(int x)
{if (x<0) return -x; else return x;}
int n,m,i,j,x[8],y[8],sol[8],rez[8],t,c[5];
int main()
{
freopen("portal3.in","r",stdin);
freopen("portal3.out","w",stdout);
scanf("%d",&t);
while (t--)
{
scanf("%d %d",&n,&m);
for (i=0;i<3;++i)
{scanf("%d %d %d %d %d",&x[i*2],&y[i*2],&x[i*2+1],&y[i*2+1],&c[i]);
sol[i*2]=x[i*2]+y[i*2]; sol[i*2+1]=x[i*2+1]+y[i*2+1];
}
sol[6]=n+m;x[6]=n;y[6]=m;
for (i=0;i<6;++i)
{for (j=0;j<7;++j)
if ((i/2!=j/2) && (sol[i]+c[i/2]+abs(x[i]-x[j])+abs(y[i]-y[j])<sol[j]))
sol[j]=sol[i]+abs(x[i]-x[j])+abs(y[i]-y[j]);
if ((i%2==0) && (sol[i]+c[i/2]<sol[i+1]))
sol[i+1]=sol[i]+c[i/2];
if ((i%2==1) && (sol[i]+c[i/2]<sol[i-1]))
sol[i-1]=sol[i]+c[i/2];
}
printf("%d\n",sol[6]);
}
return 0;
}