链式前向星
链式前向星是图的一种存储方式,其类似于邻接表。
数据结构
构造两个数组 edge
、head
。
const int N = 1e5;
int head[N];
struct {
int to, val, nxt;
} edge[N];
head[u]
表示的是最新加入的以
u
u
u 为弧尾的边在 edge
数组中的下标。nxt
字段表示的是上一个加入的以
u
u
u 为弧尾的边在 edge
数组中的下标。
加边函数
int tot = 0; // Total number of edges.
void add(int u, int v, int w)
{
edge[++tot].to = v;
edge[tot].val = w;
edge[tot].nxt = head[u];
head[u] = tot;
}
如果要访问某个点(假设为 u u u)的所有邻居
for (int i = head[u]; i; i = edge[i].nxt) {
int v = edge[i].to, w = edge[i].val;
// TODO
}
最大流
参考 最大流 - OI Wiki
模板题 P3376 【模板】网络最大流