Pagini recente » Cod sursa (job #2248184) | Cod sursa (job #2736182) | Cod sursa (job #2623353) | Cod sursa (job #2519666) | Cod sursa (job #637886)
Cod sursa(job #637886)
#include <fstream>
#include <algorithm>
#include <utility>
using namespace std;
#define x first
#define y second
const int INF = 0x3f3f3f3f;
int T, N, M;
pair<int, int> C1[6], C2[6];
int Cost[6], result;
inline int iabs(int x)
{
return (x < 0 ? -x : x);
}
inline int dist(pair<int, int> i1, pair<int, int> i2)
{
return iabs(i1.x - i2.x) + iabs(i1.y - i2.y);
}
int main()
{
ifstream fin("portal3.in");
ofstream fout("portal3.out");
fin >> T;
while (T--)
{
fin >> N >> M;
fin >> C1[1].x >> C1[1].y >> C2[1].x >> C2[1].y >> Cost[1];
fin >> C1[2].x >> C1[2].y >> C2[2].x >> C2[2].y >> Cost[2];
fin >> C1[3].x >> C1[3].y >> C2[3].x >> C2[3].y >> Cost[3];
C1[4] = make_pair(N, M);
result = INF;
for (int i = 0; i <= 3; ++i)
for (int j = 0; j <= 3; ++j)
for (int k = 0; k <= 3; ++k)
result = min(result, dist(C1[0], C1[i]) + dist(C2[i], C1[j]) + dist(C2[j], C1[k]) + dist(C2[k], C1[4]) + Cost[i] + Cost[j] + Cost[k]);
fout << result << '\n';
}
fin.close();
fout.close();
}