题目描述
有一个将 1 到 N 的整数重新排列得到的排列 p1,p2,…,pN。另外,给定 M 对整数对,每对为 (x1,y1),(x2,y2),…,(xM,yM),其中 1≤xj,yj≤N。AtCoDeer 君希望通过任意次数地对排列 p 进行如下操作,使得满足 pi=i 的 i 的数量(1≤i≤N)最大。
- 选择一个 1≤j≤M,交换 pxj 和 pyj。
请你求出通过若干次操作后,满足 pi=i 的 i 的最大可能数量。
输入格式
输入通过标准输入给出,格式如下:
N M
p1 p2 … pN
x1 y1
x2 y2
⋮
xM yM
输出格式
输出通过操作后,满足 pi=i 的 i 的最大可能数量。
样例 1
输入
5 2
5 3 1 4 2
1 3
5 4
输出
2
样例 2
输入
3 2
3 2 1
1 2
2 3
输出
3
样例 3
输入
10 8
5 3 6 8 7 10 9 1 2 4
3 1
4 1
5 9
2 5
6 5
3 5
8 9
7 9
输出
8
样例 4
输入
5 1
1 2 3 4 5
1 5
输出
5
说明/提示
限制条件
- 2≤N≤105
- 1≤M≤105
- p 是 1 到 N 的一个排列
- 1≤xj,yj≤N
- xj=yj
- 如果 i=j,则 {xi,yi}={xj,yj}
- 所有输入均为整数
样例解释 1
选择 j=1 进行操作后,p 变为 1 3 5 4 2,这是最优情况,因此答案为 2。
样例解释 2
例如,依次选择 j=1,j=2,j=1 进行操作后,p 变为 1 2 3,显然这是最优情况。注意,同一个 j 可以被多次选择。
样例解释 4
无需进行任何操作。
由 ChatGPT 4.1 翻译