参考文章:http://blog.csdn.net/shuangde800/article/details/8066698
const int N=1100;
struct Matrix
{
int mat[N][N];
int n,m;
void set_size(int row, int column){
n=row; m=column;
}
Matrix& operator = (const Matrix &a){
set_size(a.n,a.m);
memcpy(mat, a.mat, sizeof(a.mat));
return *this;
}
friend Matrix operator *(const Matrix &a,const Matrix &b){
Matrix ret;
ret.set_size(a.n, b.m);
for(int i=1; i<=a.n; ++i){
for(int k=1; k<=a.m; ++k)if(a.mat[i][k]){
for(int j=1; j<=b.m; ++j)if(b.mat[k][j]){
ret.mat[i][j] = ret.mat[i][j]+a.mat[i][k]*b.mat[k][j];
}
}
}
return ret;
}
friend bool operator==(const Matrix &a,const Matrix &b){
if(a.n!=b.n ||