Pagini recente » Cod sursa (job #2075735) | Cod sursa (job #319648) | Cod sursa (job #2946485) | Cod sursa (job #1331747) | Cod sursa (job #636014)
Cod sursa(job #636014)
#include <fstream>
#include <stdlib.h>
#include <math.h>
using namespace std;
ifstream fi ("portal3.in");
ofstream fo ("portal3.out");
const int dim = 10, OO = 2000000000;
int C[dim], V[dim], T, N, M, D;
struct pct { int x, y; } P[dim];
void back (int x, int y, int d)
{
if (x == N && y == M)
{
D = d < D ? d : D;
return;
}
for (int i = 0, j, dn; i <= 6; i++)
if (!V[i])
{
j = i;
if (i != 6)
{
if (i & 1)
j--;
else
j++;
}
dn = d + abs(x - P[i].x) + abs(y - P[i].y) + C[i];
V[i] = V[j] = 1;
back (P[j].x, P[j].y, dn);
V[i] = V[j] = 0;
}
}
int main ()
{
fi >> T;
while (T--)
{
fi >> N >> M;
D = OO;
for (int i = 0; i < 6; i += 2)
{
fi >> P[ i ].x >> P[ i ].y;
fi >> P[i+1].x >> P[i+1].y;
fi >> C[i]; C[i+1] = C[i];
}
P[6].x = N, P[6].y = M;
back (0, 0, 0);
fo << D;
}
return 0;
}