dinic模板
来源:互联网 发布:人工智能的细分领域 编辑:程序博客网 时间:2024/06/14 14:40
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;int n,m;const int inf=1e9;const int N=1e5+5;int dis[N],q[N],head[N],next[N],go[N],val[N];int tot=1;int cur[N];inline bool bfs(){ int t=0,w=1; memset(dis,-1,sizeof(dis)); q[1]=1,dis[1]=0; while (t<w) { int x=q[++t]; for(int i=head[x];i;i=next[i]) { int v=go[i]; if (val[i]&&dis[v]==-1) { dis[v]=dis[x]+1; q[++w]=v; } } } if (dis[n]==-1)return 0; return 1;}inline int dfs(int x,int f){ if (x==n)return f; int w,used=0; for(int i=head[x];i;i=next[i]) { int v=go[i]; if (val[i]&&dis[v]==dis[x]+1) { w=dfs(v,min(f-used,val[i])); used+=w; val[i]-=w; val[i^1]+=w; if (used==f)return f; } } if (!used)dis[x]=-1; return used;}inline int dinic(){ int ans=0; while (bfs()) { memcpy(cur,head,sizeof(cur)); ans+=dfs(1,inf); } return ans;}inline void add(int x,int y,int z){ go[++tot]=y,val[tot]=z,next[tot]=head[x]; head[x]=tot;}int main(){ scanf("%d%d",&m,&n); fo(i,1,m) { int x,y,z; scanf("%d%d%d",&x,&y,&z); add(x,y,z); add(y,x,0); } printf("%d\n",dinic()); return 0;}
0 0
- Dinic 模板
- dinic 模板
- Dinic模板
- Dinic模板
- Dinic模板
- Dinic模板
- dinic模板
- dinic 模板
- dinic 模板
- (模板) dinic
- 模板-Dinic
- 【Dinic模板】
- dinic 模板
- Dinic模板
- 模板:DINIC
- DINIC 模板
- 【模板】dinic
- dinic模板
- EXYNOS4412安卓开发包包括systemimg ramdiskimg uboot kernel
- L1-005考试座位号
- [bzoj3812]主旋律
- DDA算法、正负法、Bresenham算法
- Add sudo authority
- dinic模板
- 深度学习小白——卷积神经网络可视化(二)
- Oracle(23)pl/sql编程 分页过程
- MQTT之centos6.5 下编译Mosquitto
- 第七届蓝桥杯JAVA语言B组_生日蜡烛
- 接口
- 更改RemixOS分辨率
- centos7 yum mysql5.7 install
- Tess4j+中文识别+使用介绍文档+参考网址+实现源码下载地址