内容简介:题目链接:思路:这道题数据范围较大,按照邻接矩阵的方法存边只能得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网络:容器网络初探
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
GitHub入门与实践
[日] 大塚弘记 / 支鹏浩、刘斌 / 人民邮电出版社 / 2015-7 / 39.00元
本书从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作,使用GitHub的开发流程以及如何将GitHub引入到企业中。在讲解GitHub的代表功能Pull Request时,本书专门搭建了供各位读者实践的仓库,邀请各位读者进行Pull Request并共同维护。一起来看看 《GitHub入门与实践》 这本书的介绍吧!