#include #include #include // using std::cin; // using std::cout; std::ifstream cin("rain.in"); std::ofstream cout("rain.out"); const char endl = '\n'; const int N = 2505; int n, m, k, a[N], b[N], tag[N], match[N], ans; std::vector g[N]; bool dfs(int u, int t) { if (tag[u] == t) return false; tag[u] = t; for (int v : g[u]) { if (!match[v]) { ans -= a[u]; match[v] = u; return true; } else if (dfs(match[v], t)) { ans += a[match[v]]; ans -= a[u]; match[v] = u; return true; } } return false; } int main() { std::ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> m >> k; for (int i = 1; i <= n; i++) { cin >> a[i]; ans += a[i]; } for (int i = 1; i <= n; i++) { cin >> b[i]; ans += b[i]; } for (int i = 1, x, y; i <= m; i++) { cin >> x >> y; if (a[x] == b[y]) { g[x].emplace_back(y); } } for (int i = 1; i <= n; i++) { dfs(i, i); } cout << ans << endl; return 0; }