#CF1940C. Burenka and Pether
Burenka and Pether
题目描述
从前,在 Burlyandia 王国,公主 Burenka 想取悦她的朋友 ReLu。考虑到 ReLu 对加密货币也有兴趣,Burenka 决定创建自己的区块链加密货币,命名为 Pether。
在修读了网络安全相关课程并接受专家指导后,Burenka 决定让 Pether 得到尽可能好的保护。因此,设置了极其复杂的限制条件,并非所有用户之间都能相互兑换 Pether。
Pether 区块链的结构十分复杂。所有用户用整数 到 编号,每个用户被分配了唯一的标识符 ,同时货币有一个安全参数 。
用户 仅在满足 且 时,才能直接向用户 转账 Pether。但这还不够!
用户间的直接转账需通过一系列中间交易完成。每笔交易中,后续每个中间用户(包括最后一个用户 )的标识符必须严格递增,且增幅不超过 。此外,除起点 和终点 外,所有中间用户的标识符都必须严格小于 。
更形式化地说,用户 能直接向用户 转账的条件如下:
- 满足 ;
- 满足 ;
- 存在长度为 的中间用户序列 ,使得: (a) ; (b) 对于所有 ,有 ; (c) 对于所有 ,有 。
Burenka 请你作为她的专业程序员,理解这套系统,并回答若干组用户间转账的查询。
每个查询需要你判断:是否存在一条直接转账序列(可经过中间用户),允许从用户 向用户 转账 Pether。
- 若 ,仅需判断是否可行;
- 若 ,还需最小化直接转账的次数(转账过程中直接转账的总次数需达到最小)。
输入格式
第一行包含三个整数 (,),分别表示用户数量、安全参数、测试组编号。
第二行包含 个整数 (),表示每个用户的标识符,保证所有 互不相同。
第三行包含一个整数 (),表示查询数量。
接下来 行,每行包含三个整数 (,):
- 为转账发起方, 为接收方;
- :判断是否可行;
- :判断可行且输出最少直接转账次数。
输出格式
输出 行,第 行对应第 个查询的答案:
- 若无法转账,输出 ;
- 若 ,可行则输出 ;
- 若 ,可行则输出最少直接转账次数。
6 1 0
2 1 34 5 6
6
2 1 3
2 1 2
1 1 4
2 1 5
2 1 6
1 2 6
1
0
1
3
4
1
6 2 0
1 2 34 5 6
6
2 1 5
2 2 5
2 1 6
2 2 6
2 1 4
2 2 4
2
2
3
2
2
1
10 2 0
2 1 43 5 6 8 710 9
10
2 1 5
1 2 5
2 3 5
2 1 9
2 5 8
2 3 9
2 1 8
1 1 2
2 3 8
2 1 9
2
1
1
4
2
3
3
0
2
4
数据规模与约定
对于 的数据,。