#arc114d. [arc114_d]Moving Pieces on Line
[arc114_d]Moving Pieces on Line
问题说明
设 。我们有一个图,其中每个整数 都有一个顶点,并且对于每个 ,有一个连接顶点 和顶点 的无向边(我们将其称为边 )。
此图中的所有边最初都被涂成红色。另外,我们有 个物品,第 个物品位于顶点 。
Maroon可以重复以下操作:
- 选择一个物品。如果该物品位于顶点 ,则将其移动到顶点 或 。然后,如果经过的边现在被涂成红色,则将其涂成蓝色,反之亦然。
在此过程中,可能有多个物品位于同一个顶点。
Maroon希望通过零次或多次执行此操作,使边的颜色组合达到他期望的状态。期望的颜色组合由一个偶数 和 个整数 表示:这意味着对于 ,边 是红色的,对于 ,边 是蓝色的,以此类推,对于 ,边 是红色的。更正式地说,对于每个奇数 ,对于每个满足 的 ,边 是蓝色的;其他所有边都是红色的。
求使边的颜色组合达到期望状态所需的最小操作次数。如果无法做到这一点,请输出 。
约束条件
- 是偶数。
- 输入中的所有值都是整数。
输入
输入以以下格式从标准输入中给出:
输出
输出使边的颜色组合达到期望状态所需的最小操作次数。如果无法做到这一点,请输出 。
样例输入 1
2 2
2 -1
-2 2
样例输出 1
4
如下所示,我们可以通过四个操作达到期望的状态,这是最优的,因为我们需要重新涂色四条边。
初始情况如下所示。为了方便起见,我们省略了 左侧和 右侧的边。
我们将位于 的物品移动到 得到以下结果:
然后,我们将位于 的物品移动到 得到以下结果:
然后,我们将位于 的物品移动到 得到以下结果:
然后,我们将位于 的物品移动到 得到以下结果,这就是期望的状态:
样例输入 2
2 2
2 2
5 8
样例输出 2
9
一开始可能有多个物品位于同一个顶点。
样例输入 3
3 4
1 3 5
0 2 4 6
样例输出 3
-1
样例输入 4
4 4
3 4 5 6
3 4 5 6
样例输出 4
2