学习笔记:链式前向星 + 最大流

链式前向星是一种用于存储图的数据结构,它包括两个数组edge和head。edge数组保存边的信息,head数组指示每条边在edge数组中的位置。加边函数方便地添加边,并且可以遍历弧尾为u的所有邻居来实现图的遍历。这种结构常用于实现最大流算法,如网络最大流问题。
摘要由CSDN通过智能技术生成

链式前向星

链式前向星是图的一种存储方式,其类似于邻接表。

数据结构

构造两个数组 edgehead

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 【模板】网络最大流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值