终于照着模板打了一遍前向星……

虽然还不是太懂……

直接上代码吧……依然是poj1273的题

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<queue>
#define  M 400
int INF=10000001;
using namespace std;struct node
{int u,v,cap,next;
};
node edge[M*M];
int next[M],head[M],d[M],vis[M];
int ecnt;
void init()
{ecnt=0;memset(head,-1,sizeof(head));
}void add(int u,int v,int c)
{edge[ecnt].u=v;edge[ecnt].v = v;    edge[ecnt].cap = c;    edge[ecnt].next = head[u];    head[u] = ecnt++;    edge[ecnt].u = v;    edge[ecnt].v = u;    edge[ecnt].cap = 0;    edge[ecnt].next = head[v];    head[v] = ecnt++;
}
bool bfs(int begin,int end)
{int i,l,h,k,y;for(i=0;i<=end;i++)d[i]=-1;d[begin]=0;queue<int> q;q.push(begin);while(!q.empty()){k=q.front();q.pop();for(i=head[k];i!=-1;i=edge[i].next){y=edge[i].v;if(edge[i].cap>0 && d[y]==-1){d[y]=d[k]+1;if(y==end)return true;q.push(y);}}}return false;
}int dfs(int x,int exp,int end)
{vis[x]=1;if(x==end)return exp;int y,temp,i;for(i=next[x];i!=-1;i=edge[i].next,next[x]=i){ y=edge[i].v;if(edge[i].cap>0 && d[y]==d[x]+1 && vis[y]==0)if(temp=(dfs(y,min(exp,edge[i].cap),end))>0){edge[i].cap-=temp;edge[i^1].cap+=temp;return temp;}}return 0;
}int dinic(int begin,int end)
{
int i,ans=0,flow;
while(bfs(begin,end))
{for(i=0;i<=end;i++)next[i]=head[i];while(true){for(i=0;i<=end;i++)vis[i]=0;flow=dfs(begin,INF,end);if(flow==0)break;ans+=flow;}}return ans;
}int main()
{   int i,n,m;while(~scanf("%d%d",&m,&n)){   init();for(i=1;i<=m;i++){   int u,v,c;scanf("%d%d%d",&u,&v,&c);add(u,v,c);}int sum=dinic(1,n);printf("%d\n",sum);}return 0;} 

dinic网络流前向星写法相关推荐

  1. AcWing 4246. 最短路径和(反向建图+链式前向星+堆优化)

    题目连接 https://www.acwing.com/problem/content/description/4249/ http://poj.org/problem?id=1511 思路 其实这道 ...

  2. 图论部分模板(基于链式前向星的存储方式)

    图论篇部分模板(基于链式前向星的存储方式) 你还在为暴力枚举复杂度太高而苦恼吗?你还在为DP而痛苦吗?你还在为搜索剪枝而绞尽脑汁吗?选择链式前向星吧,链式前向星--专注存图20年 . 1. 链式前向星 ...

  3. 【邻接表存图模板】vector邻接表、数组邻接表、链式前向星

    一.目录 一.目录 二.前言 三.邻接表"详解" (一)边的信息 (二)几种邻接表的实现方法"详解" 1.数组邻接表 代码 2.vector邻接表 代码 vec ...

  4. 二分图最大匹配(匈牙利算法,Dinic网络流算法)

    二分图最大匹配 二分图最大匹配问题: 有两个集合A,B,两个集合间有多条边连接集合中的点,且单个集合中的点各不相连,求两集合的点能两两配对的最大匹配数. (参考:)二分图最大匹配--匈牙利算法 匈牙利 ...

  5. 链式前向星核心代码解析 ← 数组模拟邻接表

    [知识点] 在图论算法实现中,常使用C++标准库STL自带的vector来模拟邻接表存图.详见: https://blog.csdn.net/hnjzsyjyj/article/details/101 ...

  6. Balkan2007]Toponyms[链式前向星建字典树+getchar()读入优化]

    思路容易想,卡空间和时间就吐了 用链式前向星压缩空间,用getchar()一位一位读加快读入 #include <iostream> #include <cstdio> #in ...

  7. HDU 4738 Caocao‘s Bridges(桥、任何位运算一定都要加括号、因为有重边所以用前向星)

    HDU 4738 Caocao's Bridges(桥.任何位运算一定都要加括号.因为有重边所以用前向星) Caocao was defeated by Zhuge Liang and Zhou Yu ...

  8. P3366 【模板】最小生成树(链式前向星,prim,有坑)难度⭐⭐

    题目链接 输入: 4 5 1 2 2 1 3 2 1 4 3 2 3 4 3 4 3 输出: 7 链式前向星相比于矩阵,遍历的代码更加复杂一点,但是省空间,这道题用矩阵存就MLE,只能用链式前向星存. ...

  9. P1155 双栈排序(二分图的染色判断+链式前向星)

    P1155 双栈排序 让字典序最小,当然尽量进S1 那什么时候必须进S2呢? a[i]和a[j] 不能压入同一个栈⇔存在一个k,使得i<j<k且a[k]<a[i]<a[j] 因 ...

最新文章

  1. linux shell 的 for 循环
  2. 在网站推广的道路中同样的起点,知乎豆瓣却走上了不相交的两条路
  3. Spring框架使用规范和IOC的开发
  4. JS判断是否为安卓orIOS
  5. 计算机项目教学法探讨,项目教学法在计算机教学中应用计算机教学论文计算机论文...
  6. python打印字符串的前五行_python基础-字符串(6)
  7. Maven 梳理 - Maven中的dependencyManagement 意义
  8. java 获取视频时长
  9. 程序员常见面试逻辑智力题(笔试题)附参考答案
  10. 数通学习网络协议地图
  11. 锂电池电源管理系统设计与实现(单片机)
  12. php架构师培训,php架构师培训效果怎么样
  13. 如何在WPS文字中插入打勾(叉)方框
  14. 关键信息基础设施确定指南_干货分享 | 关键信息基础设施运营单位如何做好业务安全测试...
  15. 力扣-求关注者的数量
  16. 有什么好的OCR软件可以实现图片转文字
  17. java socket 打印机_Java使用POS打印机(无驱)
  18. java读取potx
  19. python cmd以管理员执行指令(网卡切断与打开)
  20. 腾讯云服务器入门使用-连接登录

热门文章

  1. PbootCms上传图片变模糊、上传图片尺寸受限的解决方案
  2. 蓝桥杯 ADV-327 VIP试题 研究兔子的土豪(试题解析)
  3. OSChina 周一乱弹 ——周日晚上,高跟鞋坏了。
  4. 用于管理容器生命周期的 Docker 命令
  5. 坚果云和亿方云相比较哪个好?
  6. android+64g+tf,2G运存+64G内存 Win8平板这点干货够用?
  7. socket接口详解
  8. Apollo 分布式部署指南
  9. 如何获得快乐? 期望值管理/阈值自控/应对时间变快
  10. 【第1159期】CSS预加载Preload