// UVa 11218 - KTV #include <iostream> #include <stdio.h> #include <string.h> using namespace std; #define datatype signed long long int int main() { int n, m[81]; datatype s[81]; int t = 0; cin >> n; while (n) { t++; for (int i = 0; i < n; i++) { int a, b, c; cin >> a >> b >> c >> s[i]; a--; b--; c--; m[i] = ((1 << a) | (1 << b) | (1 << c)); } datatype T[512]; memset(T, 127, sizeof(T)); datatype oo = T[0]; T[0] = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < 512; j++) { if ((T[j] != oo) && ((m[i] & j) == 0) && (T[m[i] | j] == oo || T[m[i] | j] < T[j] + s[i])) { T[m[i] | j] = T[j] + s[i]; } } } datatype sol = (T[511] == oo ? -1 : T[511]); printf("Case %d: %lld\n", t, sol); cin >> n; } return 0; }
Tuesday, November 24, 2015
UVa 11218 - KTV
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment