题号:NC51298
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld
题目描述
给定一个n个顶点的有向图,每个顶点有且仅有一条出边。
对于顶点i,记它的出边为(i, a[i])。
再给出q组询问,每组询问由两个顶点a、b组成,要求输出满足下面条件的x、y:
- 从顶点a沿着出边走x步和从顶点b沿着出边走y步后到达的顶点相同。
- 在满足条件1的情况下max(x,y)最小。
- 在满足条件1和2的情况下min(x,y)最小。
- 在满足条件1、2和3的情况下
。
如果不存在满足条件1的x、y,输出-1 -1。
输入描述:
第一行两个正整数n和q
。
第二行n个正整数a[1],a[2],...,a[n]
。
下面q行,每行两个正整数a,b
,表示一组询问。
输出描述:
输出q行,每行两个整数。
示例1
输入
复制
12 5
4 3 5 5 1 1 12 12 9 9 7 1
7 2
8 11
1 2
9 10
10 5