链接:https://www.luogu.org/problem/P3376

题目:
题目描述

如题,给出一个网络图,以及其源点和汇点,求出其网络最大流。
输入格式

第一行包含四个正整数N、M、S、T,分别表示点的个数、有向边的个数、源点序号、汇点序号。

接下来M行每行包含三个正整数ui、vi、wi,表示第i条有向边从ui出发,到达vi,边权为wi(即该边最大流量为wi)
输出格式

一行,包含一个正整数,即为该网络的最大流。
输入输出样例
输入 #1

4 5 4 3
4 2 30
4 3 20
2 3 20
2 1 30
1 3 40

输出 #1

50

说明/提示

时空限制:1000ms,128M

数据规模:

对于30%的数据:N<=10,M<=25

对于70%的数据:N<=200,M<=1000

对于100%的数据:N<=10000,M<=100000

样例说明:

题目中存在3条路径:

4–>2–>3,该路线可通过20的流量

4–>3,可通过20的流量

4–>2–>1–>3,可通过10的流量(边4–>2之前已经耗费了20的流量)

故流量总计20+20+10=50。输出50。


思路:最大流模板题,没啥好说的。

#include<bits/stdc++.h>
using namespace std;
const int maxn=10010,maxm=100010;
const int INF=0x3f3f3f3f;
int n,m,s,t;
int head[maxn],tot,N;
int dis[maxn];struct node
{int to,next,w;
}edge[2*maxm];//边开大一点,正反向,两倍最好。 void edge_init()
{memset(head,-1,sizeof(head));tot=0;N=n;
}void add_edge(int u,int v,int w)//建边正反向都建边
{edge[tot]=(node){v,head[u],w};head[u]=tot++;edge[tot]=(node){u,head[v],0};head[v]=tot++;
}int bfs()
{for(int i=0;i<=N;i++){dis[i]=0;}dis[s]=1;queue<int> que;que.push(s);while(!que.empty()){int u=que.front();que.pop();for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].to;if(edge[i].w>0&&dis[v]==0){dis[v]=dis[u]+1;que.push(v);}}} if(dis[t]!=0) return 1;else return 0;
}int dfs(int u,int dist)
{if(u==t) return dist;for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].to;if(dis[v]==dis[u]+1&&edge[i].w!=0){int mi=dfs(v,min(dist,edge[i].w));if(mi>0){edge[i].w-=mi;edge[i^1].w+=mi;return mi;}}}return 0;
}int dinic()//dinic模板
{int maxflow=0;while(bfs()){while(int mi=dfs(s,INF)) maxflow+=mi;}return maxflow;
}int main()
{scanf("%d%d%d%d",&n,&m,&s,&t);edge_init();for(int i=1;i<=m;i++){int a,b,c;scanf("%d%d%d",&a,&b,&c);add_edge(a,b,c);}int fin=dinic();printf("%d\n",fin);return 0;
}

洛谷p3376 网络流最大流模板题相关推荐

  1. 洛谷P3376 网络最大流

    不是讲网络流,就是存个板子 另外我的Dinic跑得比EK慢一倍可还行( 附两份比较好的教程,均来自洛谷日报 EK\sf \color{blue}EKEK Dinic\sf \color{blue}Di ...

  2. 洛谷3376 网络最大流

    题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...

  3. [洛谷P3391] 文艺平衡树 (Splay模板)

    初识splay 学splay有一段时间了,一直没写...... 本题是splay模板题,维护一个1~n的序列,支持区间翻转(比如1 2 3 4 5 6变成1 2 3 6 5 4),最后输出结果序列. ...

  4. 洛谷 - P4014 分配问题(费用流/KM)

    题目链接:点击查看 题目大意:给出n个工人和n个工作,每个人做每一个工作的效率都是不同的,问如何分配能让效率最低/最高 题目分析:最小费用最大流和最大费用最大流的模板题,直接套模板跑答案就行了,没有任 ...

  5. 洛谷 P3380 bzoj3196 Tyvj1730 【模板】二逼平衡树(树套树)

    [模板]二逼平衡树(树套树) 题目描述 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 查询k在区间内的排名 查询区间内排名为k的值 修改某一位值上的数值 查询k在 ...

  6. hdu3549(又是最大流模板题)

    题意: 裸的最大流模板,比hdu1532多了个case输出... 思路: 还是用hdu1532那个模板... 代码: #include<cstdio> #include<cstrin ...

  7. 洛谷OJ:P5960 【模板】差分约束算法

    思路:差分约束模板题,注意使用SPFA来判断负环,也即无解的情况. #include<queue> #include<vector> #include<string> ...

  8. 洛谷OJ素数及其筛法刷题集

    学会了线性筛.快速判断素数的读者可以在OJ上刷这些题了(后续将会完善补充) P3912 素数个数 P1835 素数密度 本题稍有难度,可以结合合数的性质来快速筛除区间内的合数,时间复杂度大致接近于区间 ...

  9. 洛谷OJ:P4779 【模板】单源最短路径(标准版)

    题目背景 2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路. 然后呢? 100 \rightarrow 60100→60: ...

  10. 洛谷P3376 【模板】网络最大流

    P3376 [模板]网络最大流 题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点 ...

最新文章

  1. 1、在Centos上安装Grafana
  2. redhat下配置SEED DVS6446开发环境3
  3. php 字符串隔位取,PHP 字符串截取字符串函数
  4. 一图简述大数据技术生态圈
  5. 谈谈对IOC及DI的理解与思考
  6. 机器思维。一些让我眼前一亮的算法。
  7. 一小时写给同组的如何使用工具检测代码质量
  8. Linux服务器安装JavaWeb环境(一) Jdk,Maven,Nginx,Tomcat
  9. linux端口映射转发工具- rinetd安装使用
  10. 用友软件用友二次开发用友单据导入用友凭证导入工具用友EXCEL导入工具EXCEL导入凭证
  11. 数位板使用技巧、个人数位板见解、插画教程...
  12. 现代经济感悟(4)-为什么一分钱一分货,两分货却要一块钱
  13. 在sqli-liabs学习SQL注入之旅(第十一关~第二十关)
  14. unity中使用AO贴图和自发光emission的简单应用
  15. 光学计算机PPT,光学课件
  16. 怎么给证件照换背景?教你一招快速更换证件照背景色
  17. (一)操作系统的基本概念
  18. JAVA第四次作业——使用枚举类对扑克牌建模
  19. 经纬度距离查询优化实例
  20. CI520 国产13.56MHz非接触式读写器NFC读卡芯片替代CV520低成本替换

热门文章

  1. GM8285C是一颗将TTL信号转换成单路LVDS信号的转接芯片
  2. 如何成为一个具有批判性思维的人?
  3. activiti设计器会签人员配置
  4. 福禄克FLUKE OptiFiber Pro HDR OTDR光时域反射(OTDR)测试仪OFP2-100-S
  5. [收藏] Flash闪存颗粒和工艺知识深度解析
  6. linux读取触摸屏事件数据
  7. 微信开放平台开发第三方授权登陆(一):开发前期准备
  8. 山东计算机科学自考科目,山东自考本科专业考试科目(动画设计、电脑艺术、计算机、电子工程、)...
  9. 关于iOS端引入Myscript 的爬坑过程(pod install error)
  10. SSH config 配置