#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define ST first
#define ND second
#define PB push_back
#define SIZE(a) ((int)a.size())
template<class T, class U>
ostream& operator<<(ostream &stream, pair<T, U> &p) {
stream << "(" << p.ST << "," << p.ND << ")";
return stream;
}
template<class T>
ostream& operator<<(ostream &stream, vector<T> &v) {
stream << "[";
for(auto elem : v) {
stream << elem << ", ";
}
stream << "]";
return stream;
}
const ll INF = 1e18;
ll res;
const int maxv = 1e9;
void rec(vector<int> &ids, vector<vector<int>> &v, vector<ll> &y, ll x) {
int end = true;
// cout << ids << "\n";
for(int i=0; i < SIZE(ids); i++) {
int id = ids[i];
if(id < SIZE(v[i])) {
ids[i]++;
vector<ll> yn = y;
ll xn = x;
int o = v[i][id];
if(o == maxv+1) {
yn[i] = xn;
} else if(o == maxv+2) {
xn = yn[i];
} else {
yn[i]+=o;
}
rec(ids, v, yn, xn);
ids[i]--;
end = false;
}
}
if(end) {
// cout << x << "\n";
// cout << y << "\n";
res = min(res, x);
}
}
int main() {
ios_base::sync_with_stdio(0);
int t;
cin >> t;
while(t--) {
res=INF;
int n;
cin >> n;
vector<vector<int>> v(n);
for(int i=0; i < n; i++) {
int m;
cin >> m;
vector<int> p(m);
for(int &o : p) {
char c;
cin >> c;
if(c == 'W') {
o = maxv+1;
} else if(c == 'Z') {
o = maxv+2;
} else if(c == '+') {
cin >> o;
} else {
cin >> o;
o*=-1;
}
}
v[i] = p;
// cout << p << "\n";
}
vector<int> init(n);
vector<ll> y(n);
rec(init, v, y, 0);
cout << res << "\n";
}
}
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; typedef pair<ll, ll> pll; #define ST first #define ND second #define PB push_back #define SIZE(a) ((int)a.size()) template<class T, class U> ostream& operator<<(ostream &stream, pair<T, U> &p) { stream << "(" << p.ST << "," << p.ND << ")"; return stream; } template<class T> ostream& operator<<(ostream &stream, vector<T> &v) { stream << "["; for(auto elem : v) { stream << elem << ", "; } stream << "]"; return stream; } const ll INF = 1e18; ll res; const int maxv = 1e9; void rec(vector<int> &ids, vector<vector<int>> &v, vector<ll> &y, ll x) { int end = true; // cout << ids << "\n"; for(int i=0; i < SIZE(ids); i++) { int id = ids[i]; if(id < SIZE(v[i])) { ids[i]++; vector<ll> yn = y; ll xn = x; int o = v[i][id]; if(o == maxv+1) { yn[i] = xn; } else if(o == maxv+2) { xn = yn[i]; } else { yn[i]+=o; } rec(ids, v, yn, xn); ids[i]--; end = false; } } if(end) { // cout << x << "\n"; // cout << y << "\n"; res = min(res, x); } } int main() { ios_base::sync_with_stdio(0); int t; cin >> t; while(t--) { res=INF; int n; cin >> n; vector<vector<int>> v(n); for(int i=0; i < n; i++) { int m; cin >> m; vector<int> p(m); for(int &o : p) { char c; cin >> c; if(c == 'W') { o = maxv+1; } else if(c == 'Z') { o = maxv+2; } else if(c == '+') { cin >> o; } else { cin >> o; o*=-1; } } v[i] = p; // cout << p << "\n"; } vector<int> init(n); vector<ll> y(n); rec(init, v, y, 0); cout << res << "\n"; } } |
English