把台位看成无向图的顶点,栈道看成边。第 r 层第 c 个台位的编号是 2r(r−1)+c。对每个 r≥2 与 c<r,同层相邻两点与上一层对应点构成一个小三角形,三条边都要加入图中。
层台景区把观景栈道按三角形分层铺设。封园前巡检组必须从指定台位出发,把每一段栈道恰好走一遍后再回到起点,才能确认廊道全部可通行。栈道的接法由园方巡检规程固定:同层相邻台位之间有栈道,相邻两层之间再按小三角补上两条斜向栈道。在本题给出的层数范围内,这样的巡回路线一定存在。
巡检区域共有 h 层。第 r 层有 r 个台位,从左到右编号依次为 2r(r−1)+1, 2r(r−1)+2, …, 2r(r−1)+r。
当 2≤r≤h 时,对每个 1≤c<r,下列三段栈道都存在(无向):
请给出一条从台位 s 出发、每段栈道恰好经过一次、并回到 s 的巡回。若有多种走法,输出任意一种即可。
层数满足 2≤h≤103,出发台位满足 1≤s≤h(h+1)/2。一次输入中任务数 k 满足 1≤k≤5×101,且所有任务的 h 之和不超过 103。
第一行一个整数 k(1≤k≤50),表示随后的巡检任务数量。
接下来 k 行,每行两个整数 h、s(2≤h≤103,1≤s≤h(h+1)/2),表示该次任务的层数和出发台位。
保证所有任务的 h 之和不超过 103。
对每个任务输出一行,包含 3×h×(h−1)/2+1 个整数,依次给出巡回经过的台位编号(第一个和最后一个都必须是 s)。
若存在多种合法路线,输出任意一种即可。评测会判定路线是否走遍每段栈道恰好一次。
输入
1
2 3
输出
3 2 1 3
说明
只有 2 层,三个台位 1、2、3 构成一个三角形,共 3 段栈道。从 3 出发,依次走 3→2、2→1、1→3,每段恰好一次并回到起点。路径上应有 3×2×1/2+1=4 个编号。
输入
1
3 4
输出
4 5 2 3 5 6 3 1 2 4
说明
3 层共 9 段栈道。从底层左侧台位 4 出发的一条合法巡回是
4→5→2→3→5→6→3→1→2→4。
相邻编号都是规程里的栈道,且九段各出现一次,首尾都是 4。
输入
2
2 2
4 7
输出
2 3 1 2
7 8 4 5 2 3 5 6 9 8 5 9 10 6 3 1 2 4 7
说明
2 层,从台位 2 出发,走 2→3→1→2 即可。4 层、18 段栈道,从台位 7 出发给出一条长为 19 的巡回;评测只要求每段栈道恰好经过一次,不要求与该输出逐点相同。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.