#include <bits/stdc++.h>
using namespace std;
int main(){
int m,n,i,j;
cin >> m >> n >> i >> j;
int s[n+1][2 * m+1];
for(int a = 1;a <= n;a++)
for(int b = 1;b <= 2 * m;b++)
cin >> s[a][b];
cout << i << " " << j << endl;
while(i != 0 && j != 0)
{
i = s[i][2 * j - 1];
j = s[i][2 * j];
cout << i << " " << j << endl;
}
}
华中科技大学(Huazhong University of Science and Technology, HUST)面积辽阔。其地图可以被划分为 n 行 m 列。用 (i,j) 来表示第 i 行第 j 列的位置。
华小科的旅行开始了,她将从 (Sx,Sy) 出发。在每一个 (i,j) 位置有着任务指引,告诉华小科她下一步应该前往第 i 行第 j 列的位置,或者是结束旅行。
请你依次输出华小科的旅行到达的位置信息,数据保证旅行能够在有限步内结束。
输入的第一行为四个整数 m,n,Sx,Sy,分别代表列数、行数和开始的坐标。
接下来 n 行,每行 2m 个整数。第 i 行的第 2⋅j−1 和第 2⋅j 个数为第 i 行第 j 列的“任务指引”。若两个数均为 0,则代表结束旅行。这些数均为 0∼max{n,m} 范围内的整数。
输出若干行,每行两个数 x,y,由空格分开,代表华小科的旅行路径经过了 (x,y)。
3 3 1 1
1 2 1 3 2 1
2 2 0 0 2 3
3 2 3 3 1 1
1 1
1 2
1 3
2 1
2 2
华小科从 (1,1) 出发,依次经过 (1,2),(1,3),(2,1),在 (2,2) 终止旅行。
对于 30% 的测试数据,n=m;
对于另外 30% 的测试数据,Sx=Sy=1;
对于 100% 的测试数据,1≤n,m≤103,1≤Sx≤n,1≤Sy≤m。