返回小组 开始 2026-07-13 10:00:00

2026CSP-J模拟卷3

结束 2026-07-13 17:00:00
Contest is over.
当前 2026-07-22 17:43:50

C. 陷阱棋

描述

陷阱棋的棋面由n行m列的矩阵组成。在矩阵上的每一格都会有一个陷阱,都会触发陷阱,使得所在行和列发生编号,即跳到另外一个格子上。假如第3行第3列的陷阱,使得移动到第4行第4列,那么陷阱的偏移量为(1,1)。当然通过陷阱移动到另外一个格子上时,也会触发新一格的陷阱。很明显,当移动到一个格子的陷阱的偏移量为(0,0)时,会最终停下来。

求从棋面的每个点出发,最终停下来的位置。如果无法停下来,则输出-1 -1。

输入

从文件trap.in中读入数据。第一行两个整数n,m。表示矩阵由nm列组成。

接着输入n行,每行2m个数字,每两个数字表示棋面的第i行第j列的陷阱偏移量$(x{ij},y{ij})$。

输出

输出到文件trap.out中。输出n行,每行2m个数字,每两个数字表示棋面的每一格最终停下来的横坐标和纵坐标,如果无法停下来则输出-1 -1。

样例

输入

2 2
0 1 1 0
-1 0 0 -1

输出

-1 -1 -1 -1
-1 -1 -1 -1

输入

3 3
1 1 0 1 1 0
0 1 1 1 1 0
0 1 0 1 0 0

输出

3 3 3 3 3 3
3 3 3 3 3 3
3 3 3 3 3 3

提示

【样例1解释】

如下图所示,方格内为这一格对应的陷阱偏移量。所有位置都在不断循环。

【样例2解释】

如下图所示,所有位置都最终会在右下角处停下来。

对于所有测试数据保证:$1≤n,m≤3000, 1\le i+x{ij}\leq n,{1\lej+y}{ij}\leq m)$


Submit

登录

注册
时间限制 1 秒
内存限制 128 MB
提交