Pagini recente » Cod sursa (job #806132) | Cod sursa (job #523272) | Cod sursa (job #980630) | Cod sursa (job #276363) | Cod sursa (job #635470)
Cod sursa(job #635470)
#include <algorithm>
#include <stdio.h>
#include <iostream>
#include <fstream>
#define ll long long
using namespace std;
struct portal
{
ll x1, y1, x2, y2, c;
};
ll n, m, sol;
portal x[4];
ll p[4], sel[4];
ll dist(ll x1, ll y1, ll x2, ll y2)
{
return abs(x1 - x2) + abs(y1 - y2);
}
void perm(ll level)
{
if (level > 3)
{
ll xa = 0, ya = 0, pasi = 0;
for (int i = 1; i <= 3; i++)
{
pasi += dist(xa, ya, x[p[i]].x1, x[p[i]].y1) + x[p[i]].c;
xa = x[p[i]].x2;
ya = x[p[i]].y2;
sol = min(sol, pasi + dist(xa, ya, n, m));
}
return;
}
for (int i = 1; i <= 3; i++)
if (!sel[i])
{
sel[i] = level;
p[level] = i;
perm(level + 1);
sel[i] = 0;
}
}
int main()
{
ifstream cin("portal3.in");
ofstream cout("portal3.out");
int testCases;
for (cin >> testCases; testCases; testCases--)
{
cin >> n >> m;
sol = dist(0, 0, n, m);
for (int i = 1; i <= 3; i++)
cin >> x[i].x1 >> x[i].y1 >> x[i].x2 >> x[i].y2 >> x[i].c;
perm(1);
cout << sol;
}
return 0;
}