Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Istoria paginii utilizator/upt_lebenitele | Monitorul de evaluare | Cod sursa (job #1781491)
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
long long n,ans,i,d,vf[200001],c[200001],j,mx,m,nr,k,x,y;
bool ok=1,viz[200001];
vector<int>v[200001],q;
inline void DFS(int nod)
{
viz[nod]=1;
vf[c[nod]]++;
nr++;
if(vf[c[nod]]==1)
{
q.push_back(c[nod]);
}
mx=max(mx,vf[c[nod]]);
for(int k=0;k<v[nod].size();k++)
if(!viz[v[nod][k]])
{
DFS(v[nod][k]);
}
}
int main()
{
//freopen("date","r",stdin);
cin>>n>>m>>k;
for(i=1;i<=n;i++)
cin>>c[i];
for(i=1;i<=m;i++)
{
cin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
for(i=1;i<=n;i++)
if(!viz[i])
{
nr=0;
mx=0;
DFS(i);
ans+=(nr-mx);
while(q.size())
{
int r=q.back();
vf[r]=0;
q.pop_back();
}
}
cout<<ans;
}