Pagini recente » Cod sursa (job #1991348) | Cod sursa (job #196476) | Cod sursa (job #1279700) | Cod sursa (job #637531) | Cod sursa (job #636043)
Cod sursa(job #636043)
#include <cstdio>
#include <cstdlib>
#define inf 1000000000000LL
int t, n, m, x[11], y[11], d[11][11], u[11], v[11];
long long sol;
void back(int p, long long dist)
{
int i;
long long x=dist+d[v[p-1]][7];
if (x<sol) sol=x;
if (p<=6)
for (i=1; i<=6; i++)
if (!u[i])
{
u[i]=1;
v[p]=i;
back(p+1, dist+d[v[p-1]][v[p]]);
u[i]=0;
}
}
int main()
{
freopen("portal3.in","r",stdin);
freopen("portal3.out","w",stdout);
scanf("%d", &t);
int i, j, c;
while (t--)
{
scanf("%d %d", &n, &m);
for (i=1; i<=5; i+=2)
{
scanf("%d %d %d %d %d", &x[i], &y[i], &x[i+1], &y[i+1], &c);
d[i][i+1]=d[i+1][i]=c;
}
x[7]=n;
y[7]=m;
for (i=0; i<=7; i++)
for (j=0; j<=7; j++)
if (!d[i][j])
d[i][j]=abs(x[i]-x[j])+abs(y[i]-y[j]);
sol=inf;
for (i=1; i<=6; i++) u[i]=0;
// back(1, 0);
printf("%lld\n",sol);
}
}