
图的vector邻接表存储
Published on | 7/29/2025 |
Created on | 10/22/2021 |
By Chesium 2021/10/22
大部分图论题都比较适合拿邻接表来存储,用C++ STL的vector
容器来实现比较方便。
核心表:
vector<vector<ll> >g
其中g[u]
表示第图中以节点u
作为起点的边索引列表,可以如下遍历:
ll en=g[u].size();
for(ll i=0;i<en;i++){
// ...
}
g[u][i]
即表示图中以节点u
作为起点的第i
条边的索引,读入图时可一并记录数组v[]
(各边的终点)、w[]
(各边的权值)等等。
加上快速读写的读入示例:
for(ll i=0; i<n; i++) g.push_back(vector<ll>());
for(ll i=0; i<m; i++) {
g[read()].push_back(i);
v[i] = read();
w[i] = read();
}