#include using namespace std; using ll = long long; #ifdef LOCAL #include #else #define debug(...) #endif int main() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(20); int N, M; cin >> N >> M; vector C(N); for (int i = 0; i < N; i++) cin >> C[i], C[i]--; vector> G(N); for (int i = 0; i < M; i++) { int u, v; cin >> u >> v, u--, v--; G[u].emplace_back(v); G[v].emplace_back(u); } queue que; vector cnt(N), seen(N); for (int i = 0; i < N; i++) { if (seen[i]) continue; cnt[C[i]]++; que.emplace(i); while (!que.empty()) { int v = que.front(); que.pop(); for (int u : G[v]) { if (C[v] != C[u] || seen[u]) continue; seen[u] = true; que.emplace(u); } } } int ans = 0; for (int c = 0; c < N; c++) { if (cnt[c] == 0) continue; ans += cnt[c] - 1; } cout << ans << '\n'; }