内容简介:题目链接:思路:这道题数据范围较大,按照邻接矩阵的方法存边只能得70分。
题目链接: https://www.luogu.org/problemnew/show/P3376
思路:
这道题数据范围较大,按照邻接矩阵的方法存边只能得70分。
还是先考虑求解,只是更换存边方法。
由于本人对掌握不是很好,于是就没敢用存边,听说很方便?
其实邻接矩阵比较好写,在存反向边和增广方面。
用邻接表其实也不难。
对于反向边,我们边号需要从0开始,也就是与平常不同,。
然后就可以用异或来做,因为0^1=1,1^1=0,2^1=3,3^1=2,......
然后增光的时候循环稍有不同,看代码吧。
#include <cstdio> #include <cctype> #include <cstring> #include <iostream> #include <algorithm> #include <queue> static const int MAXN=20050; static const int MAXM=200050; static const int INF=1<<30; using namespace std; struct Edge{ int from,to,val,nextt; }edge[MAXM]; int n,m,s,t,u,v,w,num,maxflow,head[MAXN],res[MAXN],father[MAXN]; queue<int> q; inline int read(){ int x=0;bool sign=false; char alpha=0; while(!isdigit(alpha)) sign|=alpha=='-',alpha=getchar(); while(isdigit(alpha)) x=(x<<1)+(x<<3)+(alpha^48),alpha=getchar(); return sign?-x:x; } inline void addedge(int u,int v,int w){ edge[num].from=u; edge[num].to=v; edge[num].val=w; edge[num].nextt=head[u]; head[u]=num++; } inline bool bfs(int s,int t){ while(!q.empty()) q.pop(); memset(res,0,sizeof(res)); q.push(s); res[s]=INF; while(!q.empty()){ int x=q.front();q.pop(); for(int i=head[x];i;i=edge[i].nextt){ int to=edge[i].to; if(res[to]==0&&edge[i].val){ father[to]=i; res[to]=min(res[x],edge[i].val); q.push(to); } } if(res[t]) return true; } return false; } inline int EK(int s,int t){ while(1){ if(!bfs(s,t)) break; for(int i=t;i!=s;i=edge[father[i]].from){ edge[father[i]].val-=res[t]; edge[father[i]^1].val+=res[t]; } maxflow+=res[t]; } return maxflow; } int main(){ n=read();m=read();s=read();t=read(); for(int i=1;i<=m;i++){ u=read();v=read();w=read(); addedge(u,v,w); addedge(v,u,0); } printf("%d\n",EK(s,t)); return 0; }
之后会更新算法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 2019网络重构趋势展望:网络AI化加速 5G驱动网络新变革
- 网络编程——打开网络库
- python网络爬虫之初始网络爬虫
- 万人直播网络架构与CDN网络
- 深度网络揭秘之深度网络背后的数学
- 深入浅出Kubernetes网络:容器网络初探
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
CSS实战手册(第2版)
[美] David Sawyer McFarland / 俞黎敏 / 电子工业出版社 / 2010-6 / 69.80元
本书从介绍最基本的CSS知识开始,到建立用于打印网页的CSS和改进你的CSS习惯的最佳实践。将关于CSS的选择器、继承、层叠、格式化、边距、填充、边框、图片、网站导航、表格、表单、浮动布局、定位网页上的元素,以及用于打印网页的CSS等技术通过逐步地讲解与教程串联了起来。每章内容从简单到复杂,一步一步地建立起一个完整的教程示例,并在每章都会详细讨论一些技巧、最佳实践和各浏览器之间一致性的兼容问题及如......一起来看看 《CSS实战手册(第2版)》 这本书的介绍吧!