无向网的邻接矩阵的代码
时间: 2024-05-10 11:13:00 浏览: 210
邻接矩阵是无向网常用的一种存储结构,它可以通过一个二维数组来表示各个节点之间的连接关系,以下是一个基本的无向网邻接矩阵的代码实现:
```c++
const int MAXN = 100; // 矩阵最大大小
const int INF = 0x3f3f3f3f; // 定义一个无穷大值
int n, m; // 节点数和边数
int G[MAXN][MAXN]; // 邻接矩阵
void init() {
memset(G, INF, sizeof(G)); // 初始化邻接矩阵,所有元素都设为无穷大
for (int i = 1; i <= n; i++) {
G[i][i] = 0; // 对角线元素设为0
}
}
void floyd() {
for (int k = 1; k <= n; k++) { // 枚举中间节点
for (int i = 1; i <= n; i++) { // 枚举起点
for (int j = 1; j <= n; j++) { // 枚举终点
if (G[i][j] > G[i][k] + G[k][j]) { // 如果经过中间节点k,i到j的距离比原来更短
G[i][j] = G[i][k] + G[k][j]; // 更新距离
}
}
}
}
}
```
在上面的代码中,我们先定义了一个二维数组`G`,表示邻接矩阵。初始化时,我们将所有的元素都设为一个无穷大的值,表示两个节点之间没有连接。对角线上的元素设为0,表示每个节点自己到自己的距离为0。
这里还定义了两个变量`n`和`m`,分别表示节点数和边数。`init()`函数用于初始化邻接矩阵,`floyd()`函数用于求解任意两点之间的最短路径。在最后一个循环中,我们枚举中间节点`k`、起点`i`和终点`j`,然后计算经过中间节点`k`时从起点`i`到终点`j`的距离是否更短,如果更短就更新距离。
阅读全文