#include using namespace std; int n, m, u[5000005], v[5000005], w[5000005], fa[5000005]; long long ans; int find(int x) { return fa[x] == x ? x : fa[x] = find(fa[x]); } int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= m; i++) { scanf("%d%d", u + i, v + i); } for (int i = 1; i <= n; i++) { scanf("%d", w + i); fa[i] = i; } for (int i = 1; i <= m; i++) { int fu = find(u[i]); int fv = find(v[i]); fa[fv] = fu; w[fu] = max(w[fu], w[fv]); } for (int i = 1; i <= n; i++) { if (fa[i] == i) { ans += w[i]; } } printf("%lld\n", ans); return 0; }