//构造的矩阵函数
#define inf 10000000
class Matrix
{
public:
Matrix(int n);//构造函数
~Matrix();//析构函数
int row;//矩阵行数与列数
int** p;
};
Matrix::Matrix(int n)
{
row=n;
p=(int**)malloc(row*sizeof(int*));
for(int i=0;i<row;i++)
p[i]=(int*)malloc(row*sizeof(int));
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
p[i][j]=(i==j)?0:inf;
}
Matrix::~Matrix()
{
for(int i=0;i<row;i++)
free(p[i]);
free(p);
}
void nodes2nodes(Matrix* dis,Matrix* d,Matrix* r)
{
Matrix t(dis->row);
int n=d->row,i,j,m,temp;
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
d->p[i][j]=dis->p[i][j];
r->p[i][j]=j+1;
}
}
for(m=0;m<n;m++)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
t.p[i][j]=d->p[i][j];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i!=j) {
temp=t.p[i][m]+t.p[m][j];
if(temp<t.p[i][j]) {
d->p[i][j]=temp;
r->p[i][j]=r->p[i][m];
}
}
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/qq_28236309/article/details/47733867