uva 12284 直接判断

时间:2023-03-09 00:32:44
uva 12284 直接判断

思路:见代码

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define Maxn 110
using namespace std;
int a[Maxn][Maxn],b[Maxn][Maxn],n,k;
bool equel()
{
int i,j;
for(i=;i<=n;i++){
for(j=;j<=n;j++){
if(a[i][j]!=b[i][j])
return false;
}
}
return true;
}
bool symmic()
{
int i,j,cnt=;
for(i=;i<=n;i++){
for(j=;j<i;j++){
if(a[i][j]!=b[j][i]&&i!=j)
return false;
if((a[i][j]!=b[i][j]||a[j][i]!=b[j][i])&&b[j][i]!=b[i][j]){
cnt++;
}
}
}
if(cnt>) return false;
return true;
}
bool bb()
{
int i,j;
for(i=;i<=n;i++){
for(j=;j<=n;j++){
if(b[i][j]!=b[j][i])
return false;
}
}
return true;
}
bool aa()
{
int i,j;
for(i=;i<=n;i++){
for(j=;j<=n;j++){
if(a[i][j]!=a[j][i])
return false;
}
}
return true;
}
int getnum()
{
int i,j,num=;
for(i=;i<=n;i++){
for(j=;j<=n;j++){
if(a[i][j]!=b[i][j])
num++;
}
}
return num;
}
int main()
{
int t,i,j,Ca=;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&k);
for(i=;i<=n;i++){
for(j=;j<=n;j++)
scanf("%d",&a[i][j]);
}
for(i=;i<=n;i++){
for(j=;j<=n;j++)
scanf("%d",&b[i][j]);
}
printf("Case %d: ",++Ca);
if(equel()){
printf("0\n");
continue;
}
if(bb()){
printf("-1\n");
continue;
}
int ans;
ans=getnum();
if(symmic()){
if(k<=&&n<=){
printf("-1\n");
continue;
}
if(k==)
printf("%d\n",ans+);
else
printf("%d\n",ans+);
continue;
}
printf("%d\n",ans);
}
return ;
}