hugogiaohang
unknown
plain_text
a year ago
1.0 kB
6
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