关于Dinic是否必须使用【链式前向星】

P3376 【模板】网络最大流

wangbinfeng @ 2023-12-20 20:01:12

rt,我不喜欢用链式前向星(我一般用邻接表存图),弱校自学网络流,网上搜到的视频和题解都是链式前向星,其中有一个视频甚至说出了“dinic必须使用链式前向星”,因此,求助一下这句话是否正确。

缩句:Dinic是否必须使用链式前向星存图,如果不是,是否可以使用邻接表。

附加题:求推荐分层图讲解视频或blog,bdfs无果


by wangbinfeng @ 2023-12-20 20:02:31

顺便,求解释以下第一篇题解中now数组的含义。


by cjh20090318 @ 2023-12-20 20:04:34

你也许可以试着用邻接表?但是会发现很不好修改边权。

因为网络最大流涉及到修改一条边及其反向边的边权,邻接表不好操作。

如果你意志坚定可以试一下。


by wangbinfeng @ 2023-12-20 20:04:35

为了防止有人不知道邻接表具体指那种算法,附上其模板。

class edge{
public:
    int to,val;
    edge*next;
    edge(int to,edge *next):next(next),to(to){}
};
class node{
public:
    int dis;
    edge*e;
    node():e(nullptr),dis(0){}
    void add(int to){e=new edge(to,e);}
}dat[2000009];

by IceKylin @ 2023-12-20 20:05:11

@wangbinfeng 一般来说,我个人会喜欢用 vector 存图。


by cmaths @ 2023-12-20 20:05:12

用前向星方便当前弧优化,用邻接表的话得记录当前遍历到出点的下标吧,应该也行


by IceKylin @ 2023-12-20 20:06:09

@wangbinfeng 具体可以参考最新一篇题解


by cmaths @ 2023-12-20 20:06:36

now 应该就是当前弧


by wangbinfeng @ 2023-12-20 20:06:49

@cjh20090318 @cmaths ……请问大佬可以帮我解释以下第一篇题解中now数组的含义吗?我现在正好卡在了这里


by wangbinfeng @ 2023-12-20 20:07:39

@IceKylin 请问方便说下vector怎么存图吗?(顺便某个视频直接明说vector做不了网络流,也不知道是真是假)


by cmaths @ 2023-12-20 20:07:44

就是说当前对于 u 点已经遍历到的边的编号


| 下一页