Pagini recente » Cod sursa (job #1420903) | Cod sursa (job #2939720) | Cod sursa (job #727406) | Cod sursa (job #1404143) | Cod sursa (job #1122894)
#include<fstream>
#define NMAX 10
using namespace std;
ifstream f("portal3.in");
ofstream g("portal3.out");
struct portal
{
long long x, y;
}a[NMAX];
long long n, m, best[NMAX][NMAX], c[4];
long long modul(int x)
{
if (x<0) return -x;
return x;
}
void Citeste()
{
int i;
f>>n>>m;
a[7].x=n; a[7].y=m;
f>>a[1].x>>a[1].y>>a[2].x>>a[2].y>>c[1];
f>>a[3].x>>a[3].y>>a[4].x>>a[4].y>>c[2];
f>>a[5].x>>a[5].y>>a[6].x>>a[6].y>>c[3];
}
void Initializeaza()
{
int i, j;
for (i=0; i<8; ++i)
for (j=0; j<8; ++j)
if (i!=j) best[i][j]=modul(a[i].x-a[j].x)+modul(a[i].y-a[j].y);
}
void Roy_Floyd()
{
int i, j, k;
for (k=0; k<8; ++k)
for (i=0; i<8; ++i)
for (j=0; j<8; ++j)
if (i!=j && i!=k && j!=k)
best[i][j]=min(best[i][j], best[i][k]+best[k][j]);
}
int main()
{
int T;
f>>T;
// a[0].x=a[0].y=0; a[7].x=n; a[7].y=m;
while (T--)
{
Citeste();
Initializeaza();
best[1][2]=best[2][1]=c[1];//min(best[1][2], c[1]);
best[3][4]=best[4][3]=c[2];//min(best[3][4], c[2]);
best[5][6]=best[6][6]=c[3];//min(best[5][6], c[3]);
Roy_Floyd();
g<<best[0][7]<<"\n";
}
f.close();
g.close();
return 0;
}