输入一组顶点,建立无向图的邻接矩阵的c++代码
时间: 2024-01-02 07:41:31 浏览: 30
以下是建立无向图邻接矩阵的C++代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n; // 顶点数
cin >> n;
vector<vector<int>> graph(n, vector<int>(n, 0)); // 初始化邻接矩阵
int m; // 边数
cin >> m;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
graph[u][v] = graph[v][u] = 1; // 更新邻接矩阵
}
// 输出邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << graph[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
其中,输入首先是顶点数n,然后是边数m,接下来m行每行两个整数表示一条边的两个顶点。最后输出邻接矩阵。
相关问题
邻接矩阵c++存储有向图无向图加权图
邻接矩阵是一种常用的图的表示方法,可以用于存储有向图、无向图和加权图。在邻接矩阵中,矩阵的行和列分别表示图中的顶点,矩阵中的元素表示两个顶点之间是否存在边或者边的权重。
对于有向图,邻接矩阵的元素A[i][j]表示从顶点i到顶点j是否存在一条有向边。如果A[i][j]的值为1,则表示存在有向边;如果A[i][j]的值为0,则表示不存在有向边。
对于无向图,邻接矩阵是对称的,即A[i][j]的值与A[j][i]的值相等。如果A[i][j]的值为1,则表示顶点i与顶点j之间存在一条无向边;如果A[i][j]的值为0,则表示顶点i与顶点j之间不存在边。
对于加权图,邻接矩阵的元素A[i][j]可以表示边的权重。如果A[i][j]的值为0,则表示顶点i与顶点j之间不存在边;如果A[i][j]的值为非零正数,则表示顶点i与顶点j之间存在一条边,并且边的权重为A[i][j]的值。
用c++以邻接矩阵为存储结构建立无向图
好的,下面是用C++以邻接矩阵为存储结构建立无向图的代码示例:
```cpp
#include <iostream>
using namespace std;
const int MAXN = 100; // 最大顶点数
class Graph {
private:
int n; // 顶点数
int e; // 边数
int matrix[MAXN][MAXN]; // 邻接矩阵
public:
Graph(int n, int e) : n(n), e(e) {
// 初始化邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
matrix[i][j] = 0;
}
}
}
void addEdge(int u, int v) {
// 添加边
matrix[u][v] = 1;
matrix[v][u] = 1;
}
void printGraph() {
// 输出邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
};
int main() {
int n, e;
cin >> n >> e; // 输入顶点数和边数
Graph g(n, e);
for (int i = 0; i < e; i++) {
int u, v;
cin >> u >> v; // 输入边的端点
g.addEdge(u, v);
}
g.printGraph();
return 0;
}
```
在这里,我们通过一个 `Graph` 类来表示无向图。它有三个私有成员变量,分别是顶点数 `n`、边数 `e` 和邻接矩阵 `matrix`。在构造函数中,我们首先初始化邻接矩阵。在 `addEdge` 函数中,我们添加边时,将邻接矩阵中对应的元素设为 1。在 `printGraph` 函数中,我们输出邻接矩阵。
在 `main` 函数中,我们首先输入顶点数和边数,然后逐个输入边的端点,并将边添加到图中。最后输出邻接矩阵。