[POI 2009] TAB-Arrays
由于交换前后在同一行或同一列的元素还会在同一行或同一列
所以根据这个对于每个元素判断一下即可。
#include<bits/stdc++.h>
using namespace std;
const int p=1000000;
int t,n,m,a[1001][1001],b[1001][1001];
int x[4*p+1],y[4*p+1];
bool f;
int main(){
ios::sync_with_stdio(0),cin.tie(0);
cin>>t;
while(t--){
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
cin>>n>>m,f=1;
for(int i=1;i<=n;i++)
for(int j=1,t;j<=m;j++)
cin>>t,t+=p,x[t]=i,y[t]=j;
for(int i=1;i<=n;i++)
for(int j=1,t;j<=m;j++){
cin>>t,t+=p,b[i][j]=t;
if(!x[t]||!y[t]||x[t]!=x[b[i][1]]||y[t]!=y[b[1][j]])f=0;
}
if(f)cout<<"TAK\n";
else cout<<"NIE\n";
}
return 0;
}

浙公网安备 33010602011771号