为什么没人用 vector

P3376 【模板】网络最大流

AC_love @ 2023-09-26 20:15:32

vector 党震怒

所以如果写一篇对最大流算法介绍和其他题解都一样的题解,然后详细介绍如何用 vector 实现最大流算法的话,可以联系管理员添加题解吗?


by AC_love @ 2023-09-26 20:44:57

@Phantom2009 感觉很厉害,可以试试


by _WRYYY_ @ 2023-09-27 09:29:19

处理反向边一般有两种做法,数据小点可以直接开矩阵(虽然我觉得这样还不如直接邻接矩阵),数据大了的话就给 vector 再套个 pair 进去

vector<pair<int,pair<int,int>>>a[N];

我一般这样写,first 是到哪个节点,second.first 是边权, second.second 是反向边编号,调用反向边就直接 a[y][fy-1].....

y 是 first ,fy 是 second.second

加边就这样写

inline void vadd(int x, int y, int w)
{
    a[x].push_back(m_p(y, m_p(w, a[y].size() + 1)));
    a[y].push_back(m_p(x, m_p(0, a[x].size())));
}

不喜欢 pair 也可以用结构体,只是要排序的话就要重载运算符了。

要写弧优化的话也很简单,还是两种一个是新开一个数组存,另一个就是再套个 pair 。不建议写后者。

用 vector 就是会占点空间,不过现在的比赛基本上都不会卡空间


by Expert_Dream @ 2024-01-13 11:57:27

@AC_love 主打就是为了网络流才学链式前向星,还有没有一种可能,vector本质根链式前向星没有区别,而如果多开一个数组的话就是用vector来写链式前向星^^^^


上一页 |