c++建立图的邻接矩阵
时间: 2023-10-20 18:28:48 浏览: 76
在C++中,我们可以使用二维数组来表示图的邻接矩阵。其中,每个元素表示两个顶点之间是否有边相连,如果相连则为1,否则为0。
以下是一个简单的示例代码:
```c++
const int MAXN = 100; // 最大顶点数
int G[MAXN][MAXN]; // 邻接矩阵
int main() {
int n, m; // n为顶点数,m为边数
cin >> n >> m;
for (int i = 1; i <= m; i++) {
int u, v; // u和v分别为一条边的两个端点
cin >> u >> v;
G[u][v] = G[v][u] = 1; // 无向图需要将两个方向都设置为1
}
return 0;
}
```
其中,输入的第一行为顶点数n和边数m,接下来m行为每条边的两个端点u和v。在处理边的时候,需要将G[u][v]和G[v][u]都设置为1,因为无向图中的一条边对应着两个方向。
相关问题
c++输出地图邻接矩阵
假设地图中有n个点,我们可以使用一个n*n的矩阵来表示它们之间的连接关系。如果两个点之间有连接,则在矩阵中对应位置上的值为1,否则为0。下面是一个简单的C++程序,用于输出地图的邻接矩阵:
```c++
#include <iostream>
using namespace std;
const int MAXN = 100;
int map[MAXN][MAXN]; // 定义地图的邻接矩阵
int main()
{
int n; // 地图中的点数
cin >> n;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> map[i][j]; // 输入地图的邻接矩阵
// 输出地图的邻接矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
cout << map[i][j] << " ";
cout << endl;
}
return 0;
}
```
在这个程序中,我们通过一个二维数组`map`来存储地图的邻接矩阵,然后通过两个嵌套的循环遍历这个数组,输出每一个元素的值。注意,在输入地图的邻接矩阵时,我们也是通过两个嵌套的循环来完成的。
C++如何读取邻接矩阵的算例集(完整的邻接矩阵)
在C++中,读取邻接矩阵的一个算例通常涉及从用户输入或文件中读取数据以填充矩阵。下面是一个简单的例子,假设我们有一个文本文件`vertices.txt`,其中包含顶点数和每对顶点之间的边的关系:
```cpp
// 假设`vertices.txt`的内容如下:
// 5 // 表示有5个顶点
// 3 // 表示有3条边
// 0 1 // 第一条边连接顶点0和1
// 1 2 // 第二条边连接顶点1和2
// 3 4 // 第三条边连接顶点3和4
#include <iostream>
#include <vector>
int main() {
std::ifstream inputFile("vertices.txt");
if (!inputFile.is_open()) {
std::cerr << "Error opening file." << std::endl;
return 1;
}
int numVertices, numEdges;
inputFile >> numVertices >> numEdges; // 读取顶点数和边数
std::vector<std::vector<int>> adjacencyMatrix(numVertices, std::vector<int>(numVertices, 0)); // 初始化邻接矩阵
for (int i = 0; i < numEdges; ++i) {
int u, v;
inputFile >> u >> v; // 读取边的起点和终点
adjacencyMatrix[u][v] = 1; // 如果u到v有边,则矩阵对应位置设置为1
}
// 输出邻接矩阵
for (int i = 0; i < numVertices; ++i) {
for (int j = 0; j < numVertices; ++j) {
std::cout << adjacencyMatrix[i][j] << " ";
}
std::cout << "\n";
}
inputFile.close();
return 0;
}
```
在这个例子中,程序首先打开文件并读取顶点数和边数,接着创建一个相应大小的邻接矩阵。然后逐条读取边的数据,并更新邻接矩阵。最后,输出整个邻接矩阵。
阅读全文