Pagini recente » Cod sursa (job #2779784) | Cod sursa (job #3180617) | Cod sursa (job #1935522) | Cod sursa (job #2334061) | Cod sursa (job #1503036)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxP 10
using namespace std;
int n, i, j, m, t, c[maxP], sol, sum;
struct portal
{
int x;
int y;
}p[maxP], fp;
bool used[maxP];
int dmanh(portal a, portal b)
{
return abs(a.x - b.x) + abs(a.y - b.y);
}
void back(int x)
{
int i, aux, k;
if (x >= 6)
return ;
for (i = 1; i <= 6; ++ i)
if (!used[i])
{
if (i % 2 == 1)
k = i + 1;
else
k = i - 1;
sol = min(sol, c[i] + sum + dmanh(p[i], p[j]) + dmanh(p[k], fp));
sum += c[i] + dmanh(p[i], p[j]) + dmanh(p[k], fp);
used[i] = 1;
aux = j;
j = k;
back(x + 1);
j = aux;
used[i] = 0;
sum -= c[i] + dmanh(p[i], p[j]) + dmanh(p[k], fp);
}
}
void rsw()
{
freopen("portal3.in", "r", stdin);
freopen("portal3.out", "w", stdout);
scanf("%d", &t);
while (t --)
{
scanf("%d %d", &n, &m);
sol = m + n;
fp.x = n;
fp.y = m;
j = 0;
sum = 0;
for (i = 1; i < 6; i += 2)
scanf("%d %d %d %d %d", &p[i].x, &p[i].y, &p[i + 1].x, &p[i + 1].y, &c[i]),
c[i + 1] = c[i];
back(0);
printf("%d\n", sol - 2);
}
}
int main()
{
rsw();
return 0;
}