Untitled
unknown
plain_text
2 years ago
1.6 kB
5
Indexable
//thanh tri #include <iostream> using namespace std; int soLK; int giaLK[25]; int soUD; int arr[35][25]; int giaUD[35]; int soLKUD[35]; int soCanMua; int canMua[25]; int visit[25]; int minCost; void Try(int index, int cost) { if (cost > minCost) return; if(index > soUD) { for (int k = 1; k <= soCanMua; k++) { if(visit[canMua[k]] == 0) cost += giaLK[canMua[k]]; } if (cost < minCost) minCost = cost; return; } for (int k = 1; k <= soLKUD[index]; k++) { visit[arr[index][k]]++; } Try(index +1, cost + giaUD[index]); for (int k = 1; k <= soLKUD[index]; k++) { visit[arr[index][k]]--; } Try(index +1, cost); } int main() { // freopen("03_input.txt", "r", stdin); int T; cin >> T; for (int tC = 1; tC <= T; tC++) { cin >> soLK; for (int i = 1; i <= soLK; i++) { cin >> giaLK[i]; } cin >> soUD; // for (int j = 1; j <= soLK; j++) { visit[j] = 0; } // for (int i = 1; i <= soUD; i++) { cin >> giaUD[i] >> soLKUD[i]; for (int j = 1; j <= soLKUD[i]; j++) { cin >> arr[i][j]; } } cin >> soCanMua; for (int i = 1; i <= soCanMua; i++) { cin >> canMua[i]; } minCost = 999999999; Try(1,0); cout << "#" << tC << " " << minCost << endl; } return 0; }
Editor is loading...