Pagini recente » Cod sursa (job #1366766) | Cod sursa (job #1334235) | Cod sursa (job #2457887) | Cod sursa (job #1465363) | Cod sursa (job #635680)
Cod sursa(job #635680)
#include<cstdio>
using namespace std;
long long X[6],Y[6],C[3],sol[10],viz[10],N,M,S;
inline long long modul(long long a){
if(a<0)
return -a;
return a;
}
void calc(int k){
if(!k)
return;
long long dist=X[2*sol[0]]+Y[2*sol[0]];
for(int i=0;i<k;++i){
dist+=C[sol[i]];
if(i)
dist+=modul(X[2*sol[i]]-X[2*sol[i-1]+1])+modul(Y[2*sol[i]]-Y[2*sol[i-1]+1]);
}
dist+=N-X[2*sol[k-1]+1]+M-Y[2*sol[k-1]+1];
if(dist<S)
S=dist;
}
void back(int k){
calc(k);
for(int i=0;i<3;++i){
if(!viz[i]){
viz[i]=1;
sol[k]=i;
back(k+1);
viz[i]=0;
}
}
}
void solve(){
int i;
scanf("%lld%lld",&N,&M);
for(i=0;i<6;i+=2)
scanf("%lld%lld%lld%lld%lld",&X[i],&Y[i],&X[i+1],&Y[i+1],&C[i>>1]);
S=N+M;
back(0);
printf("%lld\n",S);
}
int main(){
freopen("portal3.in","r",stdin);
freopen("portal3.out","w",stdout);
int T;
scanf("%d",&T);
for(;T;--T)
solve();
fclose(stdin);
fclose(stdout);
return 0;
}