随机算法
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e3+10;
ll A[N][N],B[N][N],C[N][N],D[N],E[N],F[N],G[N];
int main(){
D:
srand(time(NULL));int n;while(cin>>n){
for(int i=0;i<n;++i)for(int j=0;j<n;++j)scanf("%lld",&A[i][j]);
for(int i=0;i<n;++i)for(int j=0;j<n;++j)scanf("%lld",&B[i][j]);
for(int i=0;i<n;++i)for(int j=0;j<n;++j)scanf("%lld",&C[i][j]);
for(int i=0;i<n;++i)D[i]=rand();
for(int i=0;i<n;++i){
ll ans=0;for(int j=0;j<n;++j)ans+=D[j]*B[i][j];
E[i]=ans;
}
for(int i=0;i<n;++i){
ll ans=0;for(int j=0;j<n;++j)ans+=E[j]*A[i][j];
F[i]=ans;
}
for(int i=0;i<n;++i){
ll ans=0;for(int j=0;j<n;++j)ans+=D[j]*C[i][j];
G[i]=ans;
}
for(int i=0;i<n;++i)if(G[i]!=F[i]){cout<<"No"<<endl;goto D;}
cout<<"Yes"<<endl;
}
}