#include <bits/stdc++.h> using namespace std; typedef long long ll; struct op { char co; int il, nr; }; int t, n; ll zl[100000]; int main() { scanf("%d", &t); for(int qu = 0; qu < t; qu++) { ll wyn = LLONG_MAX; vector <op> v; vector <int> it; scanf("%d", &n); for(int i = 0; i < n; i++) { int l; scanf("%d", &l); for(int j = 0; j < l; j++) { char c; scanf(" %c", &c); if(c == 'W' || c == 'Z') v.push_back({c, 0, i}); else { int tym; scanf("%d", &tym); if(c == '-') tym *= -1; v.push_back({'+', tym, i}); } it.push_back(it.size()); } } do { ll zg = 0; for(int i = 0; i < n; i++) zl[i] = 0; for(auto& i : it) { op tym = v[i]; if(tym.co == 'W') zl[tym.nr] = zg; if(tym.co == 'Z') zg = zl[tym.nr]; if(tym.co == '+') zl[tym.nr] += ll(tym.il); } wyn = min(wyn, zg); } while(next_permutation(it.begin(), it.end())); printf("%lld\n", wyn); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | #include <bits/stdc++.h> using namespace std; typedef long long ll; struct op { char co; int il, nr; }; int t, n; ll zl[100000]; int main() { scanf("%d", &t); for(int qu = 0; qu < t; qu++) { ll wyn = LLONG_MAX; vector <op> v; vector <int> it; scanf("%d", &n); for(int i = 0; i < n; i++) { int l; scanf("%d", &l); for(int j = 0; j < l; j++) { char c; scanf(" %c", &c); if(c == 'W' || c == 'Z') v.push_back({c, 0, i}); else { int tym; scanf("%d", &tym); if(c == '-') tym *= -1; v.push_back({'+', tym, i}); } it.push_back(it.size()); } } do { ll zg = 0; for(int i = 0; i < n; i++) zl[i] = 0; for(auto& i : it) { op tym = v[i]; if(tym.co == 'W') zl[tym.nr] = zg; if(tym.co == 'Z') zg = zl[tym.nr]; if(tym.co == '+') zl[tym.nr] += ll(tym.il); } wyn = min(wyn, zg); } while(next_permutation(it.begin(), it.end())); printf("%lld\n", wyn); } } |