int n, m, g[N], lc[N], rc[N], now[N]; int dep[N], fa[N][20]; int k, c[N], L[M], a[M], b[M], T[M];
intLCA(int x, int y){ if (dep[x] < dep[y]) std::swap(x, y); for (int i = 19; ~i; --i) if (dep[fa[x][i]] >= dep[y]) x = fa[x][i]; if (x == y) return x; for (int i = 19; ~i; --i) if (fa[x][i] != fa[y][i]) { x = fa[x][i]; y = fa[y][i]; } return fa[x][0]; }
intmain(){ scanf("%d%d%d", &n, &m, &k); for (int i = 1; i <= n; ++i) scanf("%d", &g[now[i] = i]); for (int i = 1, x, y; i <= m; ++i) { scanf("%d%d", &x, &y); fa[lc[i + n] = now[x]][0] = i + n; fa[rc[i + n] = now[y]][0] = i + n; now[y] = i + n; } for (int x = n + m; x; --x) { if (!fa[x][0]) fa[x][0] = n + m + 1; dep[x] = dep[fa[x][0]] + 1; for (int i = 0; fa[x][i]; ++i) fa[x][i + 1] = fa[fa[x][i]][i]; } for (int i = 1; i <= k; ++i) { scanf("%d%d", &a[i], &b[i]); ++c[L[i] = LCA(a[i], b[i])]; } for (int i = 1; i <= n + m + 1; ++i) c[i] += c[i - 1]; for (int i = k; i; --i) T[c[L[i]]--] = i; LL ans = 0; for (int i = 1; i <= k && L[T[i]] <= n + m; ++i) { int x = T[i], t = std::min(g[a[x]], g[b[x]]); ans += 2 * t; g[a[x]] -= t; g[b[x]] -= t; } printf("%lld\n", ans); return0; }