图的vector邻接表存储

Published on7/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();
}