#include <iostream> #include <vector> using namespace std; int main() { int n = 11; vector<vector<int>> adj_matrix(n, vector<int>(n, 0)); // 初始化 n * n 的邻接矩阵 vector<pair<int, int>> edges = {{0, 1}, {0, 2}, {0, 3}, {1, 4}, {1, 5}, {2, 5}, {2, 6}, {3, 7}, {6, 8}, {6, 9}, {7, 10}}; // 填充邻接矩阵 for (auto edge : edges) { int u = edge.first; int v = edge.second; adj_matrix[u][v] = 1; adj_matrix[v][u] = 1; } // 打印邻接矩阵 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << adj_matrix[i][j] << " "; } cout << endl; } return 0; }
时间: 2023-06-19 18:06:09 浏览: 117
#include <iostream>
这段代码是用 C++ 实现的邻接矩阵表示法。主要功能是根据输入的边列表,构建一个无向图的邻接矩阵,并打印出来。
具体实现步骤如下:
1. 定义一个 n * n 的邻接矩阵,初始值为 0。
2. 定义一个边列表,每个边是一个由两个顶点组成的 pair。
3. 遍历边列表,将每条边的两个顶点在邻接矩阵中对应的位置设为 1。
4. 打印邻接矩阵。
其中,第三步中需要注意的是,由于是无向图,所以在邻接矩阵中需要将两个顶点之间的边同时设置为 1。
这段代码实现简单,能够方便地将图转换为邻接矩阵表示。但是,对于稀疏图而言,邻接矩阵会有大量的无用信息,造成空间浪费。因此,在实际应用中,需要根据具体情况选择适合的图表示方法。
阅读全文