hugogiaohang

 avatar
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