Untitled
unknown
plain_text
a year ago
1.2 kB
1
Indexable
Never
// // 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; }