#include #include using namespace std; using ll = long long; const ll INF = 1ll << 60; int main(){ ios::sync_with_stdio(false); cin.tie(0); int n, m; cin >> n >> m; atcoder::mf_graph g(n + m + 2); ll sv = 0; int src = n + m, sink = src + 1, v, k; for(int i = 0; i < n; i++){ cin >> v; g.add_edge(src, i, v); } for(int i = n; i < n + m; i++){ cin >> v; sv += v; g.add_edge(i, sink, v); } for(int i = n; i < n + m; i++){ cin >> k; while(k--){ cin >> v; g.add_edge(--v, i, INF); } } cout << sv - g.flow(src, sink) << '\n'; }