hugogiaohang
unknown
plain_text
a year ago
1.0 kB
9
Indexable
#include<iostream>
using namespace std;
int TC, Sx, Sy, Hx, Hy, N;
int vitri[2][15];
int visit[15];
int minDis;
int absS(int a, int b){
if(a >= b) return a-b;
return b-a;
}
int kcach(int x1, int y1, int x2, int y2){
return absS(x1, x2) + absS(y1, y2);
}
void backtrack(int r, int c,int step, int dem){
if(dem > minDis) return;
if(step == N){
int tmp = dem + kcach(r, c, Hx, Hy);
if(tmp < minDis) minDis = tmp;
return;
}
for(int i=0; i<N; i++){
if(visit[i] == 0){
int tmp = kcach(r, c, vitri[0][i], vitri[1][i]);
visit[i] = 1;
backtrack(vitri[0][i], vitri[1][i], step + 1, dem + tmp);
visit[i] = 0;
}
}
}
int main(){
freopen("Text.txt", "r", stdin);
cin>>TC;
for(int tc=1; tc<=TC; tc++){
cin>>Sx>>Sy>>Hx>>Hy;
cin>>N;
for(int i=0; i<N; i++){
cin>>vitri[0][i];
cin>>vitri[1][i];
visit[i] = 0;
}
minDis = 9999999;
backtrack(Sx, Sy, 0, 0);
cout<<"Case #"<<tc<<" "<<minDis<<endl;
}
return 0;
}Editor is loading...
Leave a Comment