题干:

Arseniy is already grown-up and independent. His mother decided to leave him alone for m days and left on a vacation. She have prepared a lot of food, left some money and washed all Arseniy's clothes.

Ten minutes before her leave she realized that it would be also useful to prepare instruction of which particular clothes to wear on each of the days she will be absent. Arseniy's family is a bit weird so all the clothes is enumerated. For example, each of Arseniy's n socks is assigned a unique integer from 1 to n. Thus, the only thing his mother had to do was to write down two integers li and ri for each of the days — the indices of socks to wear on the day i (obviously, li stands for the left foot and ri for the right). Each sock is painted in one of k colors.

When mother already left Arseniy noticed that according to instruction he would wear the socks of different colors on some days. Of course, that is a terrible mistake cause by a rush. Arseniy is a smart boy, and, by some magical coincidence, he posses k jars with the paint — one for each of k colors.

Arseniy wants to repaint some of the socks in such a way, that for each of m days he can follow the mother's instructions and wear the socks of the same color. As he is going to be very busy these days he will have no time to change the colors of any socks so he has to finalize the colors now.

The new computer game Bota-3 was just realised and Arseniy can't wait to play it. What is the minimum number of socks that need their color to be changed in order to make it possible to follow mother's instructions and wear the socks of the same color during each of m days.

Input

The first line of input contains three integers nm and k (2 ≤ n ≤ 200 000, 0 ≤ m ≤ 200 000, 1 ≤ k ≤ 200 000) — the number of socks, the number of days and the number of available colors respectively.

The second line contain n integers c1, c2, ..., cn (1 ≤ ci ≤ k) — current colors of Arseniy's socks.

Each of the following m lines contains two integers li and ri (1 ≤ li, ri ≤ nli ≠ ri) — indices of socks which Arseniy should wear during the i-th day.

Output

Print one integer — the minimum number of socks that should have their colors changed in order to be able to obey the instructions and not make people laugh from watching the socks of different colors.

Examples

Input

3 2 3
1 2 3
1 2
2 3

Output

2

Input

3 2 2
1 1 2
1 2
2 1

Output

0

Note

In the first sample, Arseniy can repaint the first and the third socks to the second color.

In the second sample, there is no need to change any colors.

题目大意:

有n只袜子,m天,k个颜色。(n,m,k<=2e5)

第一行n个数,代表每只袜子的颜色。接下来m行给出m天中,每天穿的两只袜子的编号,每只袜子可能不同颜色,现在要让每天穿的两只袜子是相同颜色的,要重新染色的袜子数最少是多少。

解题报告:

直接并查集,然后找出并查集中的颜色最多的袜子是多少,因为并查集后属于不同集合的元素一定没有在m天中同时出现过,所以集合之间互不影响,所以这样做,也不会出现一只袜子被重复染色多次的情况。

因为这里只要最大值,所以不需要对每个集合都先排序然后找最大,而是直接开数组维护就好了。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define FF first
#define SS second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX = 2e5 + 5;
int n,m,k;
int c[MAX],f[MAX],cnt[MAX];
int getf(int v) {return f[v] == v ? v : f[v] = getf(f[v]);
}
void merge(int u,int v) {int t1 = getf(u),t2 = getf(v);f[t2] = t1;
}
vector<int> vv[MAX];
int mx,ans;
int main()
{cin>>n>>m>>k;for(int i = 1; i<=n; i++) scanf("%d",c+i),f[i]=i;for(int u,v,i = 1; i<=m; i++) {scanf("%d%d",&u,&v);merge(u,v);}for(int i = 1; i<=n; i++) getf(i);for(int i = 1; i<=n; i++) {vv[f[i]].pb(c[i]);}for(int i = 1; i<=n; i++) {if(vv[i].size() <= 1) continue;mx = 0;for(auto x : vv[i]) cnt[x]++,mx = max(mx,cnt[x]); for(auto x : vv[i]) cnt[x] = 0;//initans += vv[i].size() - mx;}cout << ans << endl;return 0 ;
}

【CodeForces - 731C】Socks(并查集,思维)相关推荐

  1. Codeforces 200A Cinema 并查集 + 思维 (看题解)

    Cinema 感觉这个题好神啊... 首先如果 n 比 m 大, 我们先旋转90度. 我们要加入一个(x, y)的时候, 我们枚举答案所在的行离 x 的距离 g , 然后对于x + g 行来说 我们找 ...

  2. CodeForces - 468B Two Sets(并查集+思维)

    题目链接:点击查看 题目大意:现在给出两个集合A和B,再给出两个数a和b,现在规定在集合A中的数x必须满足x和a-x同时在集合a中,而在集合B中的数x也同样需要满足x和b-x同时在集合B中,现在给出一 ...

  3. Secret Passwords CodeForces - 1263D(并查集)

    One unknown hacker wants to get the admin's password of AtForces testing system, to get problems fro ...

  4. gym:Problem A Artwork(并查集思维题)

    20162017-acmicpc-nordic-collegiate-programming-contest-ncpc-2016 Problem A Artwork 题目链接 http://codef ...

  5. Codeforces 103B - Cthulhu(并查集 找环和块)

    传送门:https://codeforces.com/problemset/problem/103/B 题意: 给一个n个结点,m条边的无向图 判断给定图是否满足以下条件: 能被表示为有3个及以上的有 ...

  6. Rumor CodeForces - 893C(并查集)

    Vova promised himself that he would never play computer games- But recently Firestorm - a well-known ...

  7. All men are brothers(并查集+思维 好题!!!)

    链接:https://ac.nowcoder.com/acm/contest/889/E 来源:牛客网 Amy asks Mr. B problem E. Please help Mr. B to s ...

  8. CodeForces 731C Socks

    //并查集的应用 #include <bits/stdc++.h> using namespace std; const int N = 2e5 + 5; int f[N]; int co ...

  9. Mahmoud and a Dictionary CodeForces - 766D 种类并查集

    题意 给出多个字符串 然后再输入多个字符串之间的关系 让我们判断这其中是否存在矛盾的关系 有矛盾输出NO 没矛盾输出 YES 然后再输入多个询问 每个询问 两个字符串 让我们判断其中的关系 同义词输出 ...

  10. Mr. Kitayuta‘s Technology CodeForces - 505D(并查集+拓扑排序或dfs找环) 题解

    题目  Shuseki Kingdom is the world's leading nation for innovation and technology. There are n cities ...

最新文章

  1. C++中最好不要在构造函数和析构函数中调用虚函数!!!
  2. 优先级队列(头条面试题)
  3. Go之十大经典排序算法
  4. 判断网页pdf还是html,html5 – 如何知道PDF.JS是否完成渲染?
  5. 电脑进入pe时蓝屏_电脑进入PE会蓝屏是怎么回事?
  6. POJ2891 Strange Way to Express Integers (扩展欧几里德)
  7. vue根据数组对象中某个唯一标识去重
  8. [Centos 6.2] centos 6.2(64位)网络配置
  9. POJ 1002 487-3279
  10. GitLab community edition
  11. 1.11 Linux压缩和解压文件
  12. Java毕设项目大学生旅游拼团网站计算机(附源码+系统+数据库+LW)
  13. 利用python-pptx包批量修改ppt格式
  14. bh1750采集流程图_多路BH1750光强检测系统的设计
  15. Spring Cloud核心组件 侵立删
  16. 单片机c语言设计奥运五环,如何用C语言程序来设计奥运五环图案.doc
  17. VS2010开发的winform程序在XP系统打不开的原因(与ico图标像素有关)
  18. 这个好用的办公网优化工具,官宣免费了
  19. 计算机的色彩在哪调整w10,win10电脑色彩太冷怎么调节屏幕色彩
  20. 【H5游戏】-用js实现无聊到令人发指的游戏抽【奥特曼】卡牌,打怪兽啦

热门文章

  1. iOS vs. Android,应用设计该如何对症下药?
  2. xfire客户端对返回list很挑剔,所以需要使用泛型。
  3. 【数据结构与算法】广度优先遍历(BFS) 深度优先遍历(DFS)
  4. 小说中人称转换作用_长篇儿童小说《合欢》:一树红绒落马缨
  5. datagrid显示mysql_WPF DataGrid显示MySQL查询信息,且可删除、修改、插入 (原发布 csdn 2018-10-13 20:07:28)...
  6. php值对象模式场景,php设计模式介绍之值对象模式第1/5页
  7. 多线程设置操作时间间隔_听说,有位Java程序员学完这59道多线程面试题之后,直接面上阿里...
  8. html5 防止脚本攻击,shell防ddos攻击脚本(二)
  9. MTU MSS 详解记录
  10. string 找出所有数字 index_发现规律,解决整数转罗马数字