Untitled

 avatar
unknown
plain_text
2 years ago
1.2 kB
2
Indexable
//
// Created by xingchaoyue on 2022/10/21.
//

#include<iostream>
#include<cstdio>
#include<map>
using namespace std;


int n,c;
int v[2000];
int fa[2000];


int finds(int i){
    int temp = i;
    while(fa[i]!= 0){
        i = fa[i];
    }
    while(temp!=i){
        int tt = temp;
        temp = fa[temp];
        fa[tt] = i;
    }
    return i;
}

void join(int i, int j){
    int ii = finds(i);
    int jj = finds(j);
    if(ii!=jj){
        fa[ii] = jj;
        finds(i);
    }
}


int vis[2000];
map<int,int>mp;
int main(){
    cin>>n>>c;
    for(int i = 1;i<=n;++i){
        cin>>v[i];
    }
    for(int i = 0;i<c;++i){
        int l,r;
        cin>>l>>r;
        join(l,r);
    }
    int all = 0;
    for(int i = 1;i<=n;++i){
        int f = finds(i);
        int maxs = 0;
        int fall = 0;
        cout<<finds(i)<<endl;
        if(!vis[f]){
            vis[f] = 1;

            mp.clear();
            for(int j = 0;j<n;++j){
                if(finds(j)==f){
                    fall++;
                    mp[v[j]]++;
                    maxs = max(mp[v[j]],maxs);
                }
            }
        }
        all+=(fall-maxs);


    }
    cout<<all<<endl;




}