matrix () {
memset(a,0x3f,sizeof a);
}
void build(){
for(re i=1;i<=n;++i) a[i][i]=0;
}
friend matrix operator * (const matrix &x,const matrix &y){
matrix z;
for(re i=1;i<=n;++i)
for(re j=1;j<=n;++j)
for(re k=1;k<=m;++k)
z.a[i][j]=min(z.a[i][j],x.a[i][k]+y.a[k][j]);
return z;
};
matrix qpow(matrix k,int n){
matrix s;s.build();
for(;n;n>>=1,k=k*k)if(n&1)s=s*k;
return s;
}
};
为什么这样定义矩阵乘法的时候单位矩阵表示为“除了主对角线为0之外其余为正无穷”?