E.游走配对(费用流)
发布日期:2021-06-30 10:28:30
浏览次数:2
分类:技术文章
本文共 963 字,大约阅读时间需要 3 分钟。
非常水的网络流
看到这么多限制,还有变化的边权…网络流没跑了
每个点拆分为入点和出点,中间连 q q q条权值为 a [ i ] + j ∗ b [ i ] a[i]+j*b[i] a[i]+j∗b[i]的边,其中 j ∈ [ 0 , q − 1 ] j\in[0,q-1] j∈[0,q−1]
源点连向 x x x的入点
y y y的出点连向汇点,跑最小费用即可
#includeusing namespace std;const int inf = 1e9;const int maxn = 3e6+10;struct edge{ int to,nxt,flow,w;}d[maxn]; int head[maxn],cnt=1;void add(int u,int v,int flow,int w){ d[++cnt] = (edge){ v,head[u],flow,w},head[u] = cnt; d[++cnt] = (edge){ u,head[v],0,-w},head[v] = cnt;}int incf[maxn],pre[maxn],s,t,dis[maxn],vis[maxn],n,m,q,a[maxn],b[maxn];bool spfa(){ queue q; q.push( s ); for(int i=0;i<=t;i++) dis[i] = inf, vis[i] = 0; incf[s] = inf; vis[s] = 1; dis[s] = 0; while( !q.empty() ) { int u = q.front(); q.pop(); vis[u] = 0; for(int i=head[u];i;i=d[i].nxt ) { int v = d[i].to; if( dis[u]+d[i].w > n >> m >> q; s = 0,t = n+n+1; for(int i=1;i<=n;i++) cin >> a[i] >> b[i]; for(int i=1;i<=n;i++) { for(int j=0;j
转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/113653588 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月16日 15时29分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ASP.NET -- 获取浏览器信息
2019-04-30
sql server 性能优化方法
2019-04-30
100条养生、养心秘笈,值得一看
2019-04-30
必须掌握的30种SQL语句优化
2019-04-30
SQL Server中Base64編碼
2019-04-30
SQL Server的数据加密简介
2019-04-30
python 部分代码2
2019-04-30
56种哈希类算法
2019-04-30
RF工具ride使用
2019-04-30
pip简单命令
2019-04-30
Python自动化操作Excel表格
2019-04-30
openssl 实现https 网站
2019-04-30
SQLite3日期与时间,常见函数
2019-04-30
sql 添加时间段内随机时间
2019-04-30
Python 字符串
2019-04-30
如何解决表空间不足问题(数据文件达到最大值)
2019-04-30
Python pandas库 常用方法使用
2019-04-30
SQL时间戳
2019-04-30
delphi数据类型列表
2019-04-30
TClientDataSet[8]: 关于索引与排序
2019-04-30