一个
但是,行和列的具体顺序并不确定。
请你根据已知的信息,将矩阵复原并输出。
输入格式
第一行包含整数 ,表示共有
每组数据第一行包含两个整数 。
接下来 行,每行包含
接下来 行,每行包含
输出格式
每组数据输出一个 行
可以证明一定存在唯一解。
数据范围
一个测试点的所有测试数据的 之和不超过 。
矩阵中包含 中的每个数恰好一次。
矩阵的每一行和每一列的信息都保证恰好给出一次。
输入样例:
2
2 3
6 5 4
1 2 3
1 6
2 5
3 4
3 1
2
3
1
3 1 2
输出样例:
1 2 3
6 5 4
3
1
2
#include<iostream>
using namespace std;
const int N = 510;
int n, m;
int row[N*N], col[N*N];
int a[N][N];
int main(){
int t;
scanf("%d", &t);
while(t--){
scanf("%d%d", &n, &m);
int x;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++){
scanf("%d", &x);
col[x] = j;
}
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++){
scanf("%d", &x);
row[x] = j;
}
for(int i = 1; i <= n * m; i++) a[row[i]][col[i]] = i;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++)
printf("%d ", a[i][j]);
puts("");
}
}
return 0;
}