516 「LibreOJ β Round #2」DP 一般看规律

内存限制:512 MB 时间限制:1000 ms

题目描述

给定一个长度为 $n$ 的序列 $a$,一共有 $m$ 个操作。 每次操作的内容为:给定 $x,y$,序列中所有 $x$ 会变成 $y$。 同时我们有一份代码: ```cpp 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$。

输出格式

对于每次修改,输出答案。

样例

数据范围与提示

$1\le n , m \le 100000$

每个出现的数字绝对值在 int 范围内。

样例

样例输入 1

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

样例输出 1

2147483647 1 1 1 1 1 1 1 1 1