邻接矩阵表示法创建无向图 代码
时间: 2023-10-23 09:29:13 浏览: 159
下面是使用邻接矩阵表示法创建无向图的代码示例,其中使用了二维数组来存储邻接矩阵:
```c++
#include<iostream>
using namespace std;
const int MAXN = 100; // 图的最大节点数
int graph[MAXN][MAXN]; // 邻接矩阵表示法
int n, m; // n 表示节点数,m 表示边数
int main()
{
cin >> n >> m; // 输入节点数和边数
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v; // 输入一条边的两个端点
graph[u][v] = 1; // 标记有一条从 u 到 v 的边
graph[v][u] = 1; // 由于是无向图,所以还要标记有一条从 v 到 u 的边
}
return 0;
}
```
以上代码实现了使用邻接矩阵表示法创建无向图的功能,可以在输入节点数和边数后,逐个输入边的两个端点,然后标记对应的邻接矩阵元素。
相关问题
7-1 邻接矩阵表示法创建无向图代码
以下是使用邻接矩阵表示法创建无向图的代码示例:
```c++
#include <iostream>
using namespace std;
const int MAXV = 100; // 最大顶点数
const int INF = 0x3f3f3f3f; // 无穷大
int G[MAXV][MAXV]; // 邻接矩阵
int n, m; // 顶点数和边数
void createGraph() {
cin >> n >> m; // 输入顶点数和边数
// 初始化邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
G[i][j] = INF;
}
}
// 读入边的信息,建图
for (int i = 0; i < m; i++) {
int u, v, w;
cin >> u >> v >> w; // 读入一条边的起点、终点和权值
G[u][v] = w;
G[v][u] = w; // 无向图需要将两个方向都加上边权
}
}
int main() {
createGraph();
return 0;
}
```
在上面的代码中,我们使用二维数组 `G` 来表示邻接矩阵,其中 `G[i][j]` 表示顶点 `i` 到顶点 `j` 的边权值。由于是无向图,所以需要将两个方向都加上边权,即 `G[u][v] = w; G[v][u] = w;`。在读入边的信息后,我们需要遍历整个邻接矩阵,将未初始化的元素赋值为无穷大 `INF`,表示两个顶点之间没有边相连。
邻接矩阵表示法创建无向图
邻接矩阵是一种表示图的方式,适用于有限的、大小固定的图。创建无向图的邻接矩阵表示法可以按照以下步骤进行:
1. 确定图的规模,即节点的个数。
2. 创建一个规模为n * n的矩阵A,其中n为节点个数。
3. 对于每个节点i,将矩阵A的第i行和第i列置为0。
4. 对于每条边(i, j),将矩阵A的第i行第j列和第j行第i列标记为1,表示i和j之间有一条边。
5. 如果希望对图进行权重的计算,可以将矩阵A的对应位置改为边的权重。
创建完邻接矩阵后,就可以方便地进行图的遍历、查找、修改等操作。同时,邻接矩阵也适用于稠密图,但对于稀疏图会浪费空间。
阅读全文