Pagini recente » Cod sursa (job #536978) | Cod sursa (job #462654) | Cod sursa (job #1627695) | Cod sursa (job #2690598) | Cod sursa (job #638819)
Cod sursa(job #638819)
#include<cstdio>
#include<iostream>
#include<deque>
#define modulo(x,y) (x>y?x-y:y-x)
#define tip long long
using namespace std;
tip t,i,j,X[8],Y[8],C[5],M[8][8],D[8],q[8],oo=2000000010;
deque<tip> Q;
void read(),solve();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("portal3.in","r",stdin);
freopen("portal3.out","w",stdout);
cin>>t;//scanf("%d",&t);
}
void solve()
{
oo*=1000000000;
for(;t;t--)
{
cin>>X[7]>>Y[7];//scanf("%d%d",&X[7],&Y[7]);
for(i=1,j=0;i<=3;i++)
{
++j;cin>>X[j]>>Y[j];//scanf("%d%d",&X[j],&Y[j]);
++j;cin>>X[j]>>Y[j];//scanf("%d%d",&X[j],&Y[j]);
cin>>C[i];//scanf("%d",&C[i]);
}
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
{
M[i][j]=modulo(X[i],X[j])+modulo(Y[i],Y[j]);
}
}
for(i=1;i<=3;i++)
{
if(C[i]<M[2*i-1][2*i])
M[2*i-1][2*i]=M[2*i][2*i-1]=C[i];
}
for(i=1;i<8;i++)D[i]=oo;
Q.resize(0);
Q.push_back(0);q[0]=1;
for(;Q.size();)
{
i=Q.front();
for(j=0;j<8;j++)
{
//if(i==j)continue;
if(D[j]>D[i]+M[i][j])
{
if(!q[j])
{
Q.push_back(j);q[j]=1;
}
D[j]=D[i]+M[i][j];
}
}
q[i]=0;
Q.pop_front();
}
cout<<D[7]<<'\n';//prtipf("%d\n",D[7]);
}
}