pta邻接表存储图
时间: 2023-07-16 08:14:29 浏览: 59
在 PTA 上,通常使用邻接表来存储图。邻接表是一个数组列表,其中每个元素都是一个链表,该链表存储与该节点相邻的节点。
例如,下面的代码可以创建一个有 $n$ 个节点的邻接表,并添加从节点 $u$ 到节点 $v$ 的边:
```c++
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 1000; // 最大节点数
vector<int> adj[MAXN]; // 邻接表
int main() {
int n, m;
cin >> n >> m; // 输入节点数和边数
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v; // 输入边的两个端点
adj[u].push_back(v); // 添加从 u 到 v 的边
}
// 输出邻接表
for (int u = 1; u <= n; u++) {
cout << u << ": ";
for (int v : adj[u]) {
cout << v << " ";
}
cout << endl;
}
return 0;
}
```
在这个例子中,我们使用 `vector<int>` 来存储链表。由于节点编号从 $1$ 开始,因此我们使用 `for` 循环从 $1$ 到 $n$ 遍历每个节点,输出它所相邻的节点列表。注意,对于无向图,每条边应该被添加两次(从 $u$ 到 $v$,从 $v$ 到 $u$)。