Untitled
unknown
plain_text
2 years ago
1.7 kB
2
Indexable
#include<iostream> using namespace std; int K,R; int M; int Nha_hang[30][2]; int N; int Nguoi[105][2] ; int visit_nh[30]; int visit_nguoi[105]; int so_nguoi[105]; int mt[30][105]; int max_sum =0; bool ketnoi(int i,int j) { if((Nha_hang[i][0] - Nguoi[j][0]) * (Nha_hang[i][0] - Nguoi[j][0]) + (Nha_hang[i][1] - Nguoi[j][1]) * (Nha_hang[i][1] - Nguoi[j][1]) <= R*R) return true; else return false; } void BT(int k,int summ) { cout << k <<" " << summ << endl; if(k == K){ if(summ > max_sum ) { max_sum = summ;} return ; } for(int i=1; i<=M; i++) { if(visit_nh[i] ==0 ){ visit_nh[i] = 1; for(int j=1; j <= N; j++) { if(mt[i][j] == 1 && visit_nguoi[j] ==0) { visit_nguoi[j] = k+5; summ += so_nguoi[j]; } } BT(k+1, summ); visit_nh[i] = 0; for(int j=1; j <= N; j++) { if(mt[i][j] == 1 && visit_nguoi[j] ==k+5) { visit_nguoi[j] = 0; summ -= so_nguoi[j]; } } } } } int main() { int t; cin >>t; for(int stt=1; stt <=t; stt++) { cin >> K >> R; cin >> M; for(int i=1; i<=M; i++) { cin >> Nha_hang[i][0] >> Nha_hang[i][1]; visit_nh[i] = 0; } cin >> N; for(int i=1; i<=N; i++) { cin >> Nguoi[i][0] >> Nguoi[i][1] >> so_nguoi[i]; visit_nguoi[i] =0; } ////////////////////////////// for(int i=1; i<=M;i++) { for(int j=1; j<=N; j++) { mt[i][j] = ketnoi(i,j); } } //////////////////// /*for(int i=1; i<=M;i++) { for(int j=1; j<=N; j++) { cout << mt[i][j] << " "; } cout << endl; }*/ BT(0,0); cout << "Case #" << stt << " " << max_sum << endl; max_sum =0; } }
Editor is loading...