/**
* author: longvu
* created: 09/13/24 18:15:17
**/
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define sz(x) ((int)x.size())
#define all(x) (x).begin(), (x).end()
const int INF = 1e9;
const int nax = (int)(100001);
const int mod = 1e9 + 7;
template<class X, class Y>
bool maximize(X& x, const Y y) {
if (y > x) {x = y; return true;}
return false;
}
template<class X, class Y>
bool minimize(X& x, const Y y) {
if (y < x) {x = y; return true;}
return false;
}
struct FlowEdge {
int v, u;
long long cap, flow = 0;
FlowEdge(int v, int u, long long cap) : v(v), u(u), cap(cap) {}
};
struct Dinic {
const long long flow_inf = 1e18;
vector<FlowEdge> edges;
vector<vector<int>> adj;
int n, m = 0;
int s, t;
vector<int> level, ptr;
queue<int> q;
Dinic(int n, int s, int t) : n(n), s(s), t(t) {
adj.resize(n);
level.resize(n);
ptr.resize(n);
}
void add_edge(int v, int u, long long cap) {
edges.emplace_back(v, u, cap);
edges.emplace_back(u, v, 0);
adj[v].push_back(m);
adj[u].push_back(m + 1);
m += 2;
}
bool bfs() {
while (!q.empty()) {
int v = q.front();
q.pop();
for (int id : adj[v]) {
if (edges[id].cap - edges[id].flow < 1)
continue;
if (level[edges[id].u] != -1)
continue;
level[edges[id].u] = level[v] + 1;
q.push(edges[id].u);
}
}
return level[t] != -1;
}
long long dfs(int v, long long pushed) {
if (pushed == 0)
return 0;
if (v == t)
return pushed;
for (int& cid = ptr[v]; cid < (int)adj[v].size(); cid++) {
int id = adj[v][cid];
int u = edges[id].u;
if (level[v] + 1 != level[u] || edges[id].cap - edges[id].flow < 1)
continue;
long long tr = dfs(u, min(pushed, edges[id].cap - edges[id].flow));
if (tr == 0)
continue;
edges[id].flow += tr;
edges[id ^ 1].flow -= tr;
return tr;
}
return 0;
}
long long run() {
long long f = 0;
while (true) {
fill(level.begin(), level.end(), -1);
level[s] = 0;
q.push(s);
if (!bfs())
break;
fill(ptr.begin(), ptr.end(), 0);
while (long long pushed = dfs(s, flow_inf)) {
f += pushed;
}
}
return f;
}
};
#define Fi first
#define Se second
int a[nax], b[nax];
int32_t main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
}
for (int i = 1; i <= m; ++i) {
cin >> b[i];
}
Dinic flow(n + m + 2, 0, n + m + 1);
int ans = 0;
for (int i = 1; i <= n; ++i) {
int l;
cin >> l;
ans += a[i];
flow.add_edge(0, i, a[i]);
for (int j = 1; j <= l; ++j) {
int x;
cin >> x;
flow.add_edge(i, n + x, INF);
}
}
for (int i = 1; i <= m; ++i) {
flow.add_edge(n + i, n + m + 1, b[i]);
}
ans -= flow.run();
cout << ans << '\n';
return 0;
}
LyoqCiAqICAgIGF1dGhvcjogIGxvbmd2dQogKiAgICBjcmVhdGVkOiAwOS8xMy8yNCAxODoxNToxNwoqKi8KI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBzeih4KSAoKGludCl4LnNpemUoKSkKI2RlZmluZSBhbGwoeCkgKHgpLmJlZ2luKCksICh4KS5lbmQoKQpjb25zdCBpbnQgSU5GID0gMWU5Owpjb25zdCBpbnQgbmF4ID0gKGludCkoMTAwMDAxKTsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7Cgp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZPgpib29sIG1heGltaXplKFgmIHgsIGNvbnN0IFkgeSkgewogICAgaWYgKHkgPiB4KSB7eCA9IHk7IHJldHVybiB0cnVlO30KICAgIHJldHVybiBmYWxzZTsKfQp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZPgpib29sIG1pbmltaXplKFgmIHgsIGNvbnN0IFkgeSkgewogICAgaWYgKHkgPCB4KSB7eCA9IHk7IHJldHVybiB0cnVlO30KICAgIHJldHVybiBmYWxzZTsKfQoKc3RydWN0IEZsb3dFZGdlIHsKICAgIGludCB2LCB1OwogICAgbG9uZyBsb25nIGNhcCwgZmxvdyA9IDA7CiAgICBGbG93RWRnZShpbnQgdiwgaW50IHUsIGxvbmcgbG9uZyBjYXApIDogdih2KSwgdSh1KSwgY2FwKGNhcCkge30KfTsKCnN0cnVjdCBEaW5pYyB7CiAgICBjb25zdCBsb25nIGxvbmcgZmxvd19pbmYgPSAxZTE4OwogICAgdmVjdG9yPEZsb3dFZGdlPiBlZGdlczsKICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gYWRqOwogICAgaW50IG4sIG0gPSAwOwogICAgaW50IHMsIHQ7CiAgICB2ZWN0b3I8aW50PiBsZXZlbCwgcHRyOwogICAgcXVldWU8aW50PiBxOwoKICAgIERpbmljKGludCBuLCBpbnQgcywgaW50IHQpIDogbihuKSwgcyhzKSwgdCh0KSB7CiAgICAgICAgYWRqLnJlc2l6ZShuKTsKICAgICAgICBsZXZlbC5yZXNpemUobik7CiAgICAgICAgcHRyLnJlc2l6ZShuKTsKICAgIH0KCiAgICB2b2lkIGFkZF9lZGdlKGludCB2LCBpbnQgdSwgbG9uZyBsb25nIGNhcCkgewogICAgICAgIGVkZ2VzLmVtcGxhY2VfYmFjayh2LCB1LCBjYXApOwogICAgICAgIGVkZ2VzLmVtcGxhY2VfYmFjayh1LCB2LCAwKTsKICAgICAgICBhZGpbdl0ucHVzaF9iYWNrKG0pOwogICAgICAgIGFkalt1XS5wdXNoX2JhY2sobSArIDEpOwogICAgICAgIG0gKz0gMjsKICAgIH0KCiAgICBib29sIGJmcygpIHsKICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgICAgICBpbnQgdiA9IHEuZnJvbnQoKTsKICAgICAgICAgICAgcS5wb3AoKTsKICAgICAgICAgICAgZm9yIChpbnQgaWQgOiBhZGpbdl0pIHsKICAgICAgICAgICAgICAgIGlmIChlZGdlc1tpZF0uY2FwIC0gZWRnZXNbaWRdLmZsb3cgPCAxKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaWYgKGxldmVsW2VkZ2VzW2lkXS51XSAhPSAtMSkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIGxldmVsW2VkZ2VzW2lkXS51XSA9IGxldmVsW3ZdICsgMTsKICAgICAgICAgICAgICAgIHEucHVzaChlZGdlc1tpZF0udSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGxldmVsW3RdICE9IC0xOwogICAgfQoKICAgIGxvbmcgbG9uZyBkZnMoaW50IHYsIGxvbmcgbG9uZyBwdXNoZWQpIHsKICAgICAgICBpZiAocHVzaGVkID09IDApCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGlmICh2ID09IHQpCiAgICAgICAgICAgIHJldHVybiBwdXNoZWQ7CiAgICAgICAgZm9yIChpbnQmIGNpZCA9IHB0clt2XTsgY2lkIDwgKGludClhZGpbdl0uc2l6ZSgpOyBjaWQrKykgewogICAgICAgICAgICBpbnQgaWQgPSBhZGpbdl1bY2lkXTsKICAgICAgICAgICAgaW50IHUgPSBlZGdlc1tpZF0udTsKICAgICAgICAgICAgaWYgKGxldmVsW3ZdICsgMSAhPSBsZXZlbFt1XSB8fCBlZGdlc1tpZF0uY2FwIC0gZWRnZXNbaWRdLmZsb3cgPCAxKQogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIGxvbmcgbG9uZyB0ciA9IGRmcyh1LCBtaW4ocHVzaGVkLCBlZGdlc1tpZF0uY2FwIC0gZWRnZXNbaWRdLmZsb3cpKTsKICAgICAgICAgICAgaWYgKHRyID09IDApCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgZWRnZXNbaWRdLmZsb3cgKz0gdHI7CiAgICAgICAgICAgIGVkZ2VzW2lkIF4gMV0uZmxvdyAtPSB0cjsKICAgICAgICAgICAgcmV0dXJuIHRyOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBsb25nIGxvbmcgcnVuKCkgewogICAgICAgIGxvbmcgbG9uZyBmID0gMDsKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICBmaWxsKGxldmVsLmJlZ2luKCksIGxldmVsLmVuZCgpLCAtMSk7CiAgICAgICAgICAgIGxldmVsW3NdID0gMDsKICAgICAgICAgICAgcS5wdXNoKHMpOwogICAgICAgICAgICBpZiAoIWJmcygpKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGZpbGwocHRyLmJlZ2luKCksIHB0ci5lbmQoKSwgMCk7CiAgICAgICAgICAgIHdoaWxlIChsb25nIGxvbmcgcHVzaGVkID0gZGZzKHMsIGZsb3dfaW5mKSkgewogICAgICAgICAgICAgICAgZiArPSBwdXNoZWQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGY7CiAgICB9Cn07CgojZGVmaW5lIEZpIGZpcnN0CiNkZWZpbmUgU2Ugc2Vjb25kCgppbnQgYVtuYXhdLCBiW25heF07CmludDMyX3QgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKTsKICAgIGludCBuLCBtOwogICAgY2luID4+IG4gPj4gbTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbTsgKytpKSB7CiAgICAgICAgY2luID4+IGJbaV07CiAgICB9CiAgICBEaW5pYyBmbG93KG4gKyBtICsgMiwgMCwgbiArIG0gKyAxKTsKICAgIGludCBhbnMgPSAwOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgaW50IGw7CiAgICAgICAgY2luID4+IGw7CiAgICAgICAgYW5zICs9IGFbaV07CiAgICAgICAgZmxvdy5hZGRfZWRnZSgwLCBpLCBhW2ldKTsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBsOyArK2opIHsKICAgICAgICAgICAgaW50IHg7CiAgICAgICAgICAgIGNpbiA+PiB4OwogICAgICAgICAgICBmbG93LmFkZF9lZGdlKGksIG4gKyB4LCBJTkYpOwogICAgICAgIH0KICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG07ICsraSkgewogICAgICAgIGZsb3cuYWRkX2VkZ2UobiArIGksIG4gKyBtICsgMSwgYltpXSk7CiAgICB9CiAgICBhbnMgLT0gZmxvdy5ydW4oKTsKICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7CiAgICByZXR1cm4gMDsKfQ==