给定一个长度为 n 的序列 a ,一共有 m 个操作。 每次操作的内容为:给定 x,y ,序列中所有 x 会变成 y 。
同时我们有一份代码:
int ans = 2147483647; for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { if (a[i] == a[j]) ans = std::min(ans, j - i); } } std::cout << ans << std::endl;
请在每次修改后输出代码运行的结果。
第一行两个数,表示 n,m 。 第二行 n 个数,表示 a_1,a_2,\cdots, a_n 。 然后 m 行每行两个数 x 和 y ,表示序列中所有 x 会变成 y 。
对于每次修改,输出答案。
5 10 2 7 6 3 8 6 1 7 1 1 3 5 6 1 7 9 5 1 10 7 6 7 5 3 9
2147483647 1 1 1 1 1 1 1 1 1
1\le n , m \le 100000
每个出现的数字绝对值在 int 范围内。
int