#codethanksfestival2017h. [code_thanks_festival_2017_h]Union Sets

[code_thanks_festival_2017_h]Union Sets

问题文

最初,给定了 N 个集合 1,2,...,N{1},{2},...,{N}。 之后,进行了 M 次合并操作。 在第 i(1≤i≤M) 次操作中,将具有元素 ai 和元素 bi 的集合合并。 如果元素 ai 和元素 bi 已经属于同一个集合,则什么也不会发生。

然后,给出了 Q 个查询。 第 j(1≤j≤Q) 个查询的内容如下:

  • "元素 xj 和元素 yj 在第几次操作后被合并到同一个集合中?"

如果在 M 次操作后,元素 xj 和元素 yj 不属于同一个集合,则输出 -1。 否则,在第 K(1≤K≤M) 次操作后,元素 xj 和元素 yj 属于同一个集合,所以请输出最小的 K。

约束条件

  • 2≤N≤10^5
  • 0≤M≤10^5
  • 1≤ai,bi≤N
  • ai≠bi
  • 1≤Q≤10^5
  • 1≤xj,yj≤N
  • xj≠yj
  • 输入为整数。

输入

输入以以下格式从标准输入中给出。

N M a1 b1 : aM bM Q x1 y1 : xQ yQ

输出

输出 Q 行,表示每个查询的答案。 第 j 行输出第 j 个查询的答案。


输入例子 1

7 5
1 2
3 4
2 1
2 3
4 1
5
1 2
3 4
1 4
2 3
6 7

输出例子 1

1
2
4
4
-1

首先,有 7 个集合 1,2,3,4,5,6,7{1},{2},{3},{4},{5},{6},{7}。 之后,进行了 5 次合并操作,每次操作后集合的状态如下:

  • 第 1 次操作后:1,2,3,4,5,6,7{1,2},{3},{4},{5},{6},{7}
  • 第 2 次操作后:1,2,3,4,5,6,7{1,2},{3,4},{5},{6},{7}
  • 第 3 次操作后:1,2,3,4,5,6,7{1,2},{3,4},{5},{6},{7}
  • 第 4 次操作后:1,2,3,4,5,6,7{1,2,3,4},{5},{6},{7}
  • 第 5 次操作后:1,2,3,4,5,6,7{1,2,3,4},{5},{6},{7}

输入例子 2

7 6
1 2
1 3
1 4
1 5
1 6
1 7
3
1 3
4 5
6 7

输出例子 2

2
4
6

输入例子 3

10 0
5
1 2
4 3
5 6
8 7
9 10

输出例子 3

-1
-1
-1
-1
-1