Luogu 3376 【模板】网络最大流
0.网络流解释:如果你还是不能理解,我们就换一种说法,假设s城有inf个人想去t城,但是从s到t要经过一些城市才能到达,(以上图为例)其中s到3城的火车票还剩10张,3到t的火车票还剩15张,其他路以此类推,问最终最多能有多少人能到达t城?(假设这个地区只有火车,没有汽车飞机,步行和骑自行车会累死就不考虑了,再假设所有人都买得起火车票。)
1.https://www.cnblogs.com/zsboy/archive/2013/01/27/2878810.html EK 算法 ,但是“反悔”那个图应该9 1 9 1 9 。
2. Dinic算法可以每次找出多条增广路,为什么要分层呢?分层图是有向无环图。
每bfs一次的结果在运行框中。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<queue>
#define inf 0x3f3f3f3f
using namespace std;
int hd[10005],cnt=-1,d[10005],vis[10005],cur[10005];
struct Edge{
int to,vl,nxt;
}edge[200005];
void add(int u,int v,int w)
{
cnt++;
edge[cnt].to =v;
edge[cnt].nxt=hd[u];
edge[cnt].vl=w;
hd[u]=cnt;
}
queue<int> q;
int s,t;
int bfs()
{
memset(d,0,sizeof d);
memset(vis,0,sizeof vis);
while(q.size()) q.pop() ;//这个不写会T
d[s]=1;vis[s]=1;
q.push(s);
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=hd[u];i!=-1;i=edge[i].nxt)//边是从零开始的,因此这里可以不能是i>0 //同一条边还有容量可以流怎么办,边已经遍历完
{
int v=edge[i].to;
if(!vis[v] && edge[i].vl>0)
{
vis[v]=1;
d[v]=d[u]+1;
q.push(v);
if(v==t)return 1;
}
}
}
return 0;
} int dinic(int u,int res)//
{
if(u==t) return res;
int sum=0;
for(int i=cur[u];i!=-1;i=edge[i].nxt)
{
cur[u]=i;//当前弧优化,不符合的通道就不再判断了
int v=edge[i].to;
if(d[u]+1==d[v] && edge[i].vl>0 && res>0)//
{
int k=dinic(v,min(res,edge[i].vl)); //剩余流量及该路径容量的最小值
if(!k)
{
d[v]=0;//去掉增广完的点
break;
}
edge[i].vl-=k;
edge[i^1].vl+=k;
res-=k;
sum+=k;
}
}
return sum;
}
int n,m,u,v,w,flow,mxflow;
int main()
{
scanf("%d%d%d%d",&n,&m,&s,&t);
memset(hd,-1,sizeof hd);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&w);
add(u,v,w);
add(v,u,0);
}
// for(int i=1;i<=n;i++)
// cout<<d[i]<<" ";
// cout<<endl;
while(bfs()){
while(flow=dinic(s,inf))
mxflow+=flow;
}
cout<<mxflow<<endl;
}
Luogu 3376 【模板】网络最大流的更多相关文章
- 【洛谷 p3376】模板-网络最大流(图论)
题目:给出一个网络图,以及其源点和汇点,求出其网络最大流. 解法:网络流Dinic算法. 1 #include<cstdio> 2 #include<cstdlib> 3 #i ...
- 【Luogu】P3376网络最大流模板(Dinic)
最大流模板成为另一个被攻克的模板题. 今天QDC给我讲了一下Dinic,感觉很好懂.于是为了巩固就把这道题A掉了. 核心思想就是不断BFS分层,然后不断DFS找增广路.找不到之后就可以把答案累加输出了 ...
- luogu 3376 最小费用最大流 模板
类似EK算法,只是将bfs改成spfa,求最小花费. 为什么可以呢,加入1-3-7是一条路,求出一个流量为40,那么40*f[1]+40*f[2]+40*f[3],f[1]是第一条路的单位费用,f[2 ...
- 【Luogu P3376】网络最大流
Luogu P3376 最大流是网络流模型的一个基础问题. 网络流模型就是一种特殊的有向图. 概念: 源点:提供流的节点(入度为0),类比成为一个无限放水的水厂 汇点:接受流的节点(出度为0),类比成 ...
- [模板]网络最大流 & 最小费用最大流
我的作业部落有学习资料 可学的知识点 Dinic 模板 #define rg register #define _ 10001 #define INF 2147483647 #define min(x ...
- P3376 [模板] 网络最大流
https://www.luogu.org/blog/ONE-PIECE/wang-lao-liu-jiang-xie-zhi-dinic EK 292ms #include <bits/std ...
- P3376 【模板】网络最大流(luogu)
P3376 [模板]网络最大流(luogu) 最大流的dinic算法模板(采取了多种优化) 优化 时间 inline+当前弧+炸点+多路增广 174ms no 当前弧 175ms no 炸点 249 ...
- Dinic最大流 || Luogu P3376 【模板】网络最大流
题面:[模板]网络最大流 代码: #include<cstring> #include<cstdio> #include<iostream> #define min ...
- luogu P3376 【模板】网络最大流(no)ek
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
- 『题解』洛谷P3376 【模板】网络最大流
Problem Portal Portal1:Luogu Description 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. Input 第一行包含四个正整数\(N,M,S,T\),分 ...
随机推荐
- selenium定位方法实例
selenium定位方法实例 首先打开浏览器输入微博的网址,将网页最大化,等待3秒 from selenium import webdriver import time driver = webdri ...
- Open MPI 4.0 编译安装
电脑上目前使用的mpi环境是2.1.1版本的openmpi,是我之前直接使用系统的包管理工具安装的.但是系统包版本一般都比较老旧,现在openmpi最新版已经出到了4.0,即将出4.1了,所以我打算升 ...
- Android中RecyclerView用法,一步一步教你如何使用RecyclerView以及带你走过编码中可能会出现的坑~
首先,要明白RecyclerView是做什么的?其次是为什么要用RecyclerView?这里牵扯到RecyclerView和ListView的区别,这里不废话,大家自行百度即可! 以下示例我用的An ...
- 牛客网数据库SQL实战解析(21-30题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- T4m
Unity T4M 中文讲解 http://blog.csdn.net/tianmao111/article/details/46482963
- add forward
adb forward tcp:34999 localabstract:Unity-com.kingsgroup.rob adb forward --list adb forward --remove ...
- 【web系统UI自动化】关于UI自动化的总结
实施过了web系统的UI自动化,回顾梳理下,想到什么写什么,随时补充. 首先,自动化测试不是手动测试的替代品,是比较好的补充,而且不是占大比重的补充. 70%的测试工作集中在底层接口测试和单元测试,2 ...
- 深入了解Kafka【四】消费者的Offset管理
1.Offset Topic Consumer通过提交Offset来记录当前消费的最后位置,以便于消费者发生崩溃或者有新的消费者加入消费者组,而引发的分区再均衡操作,每个消费者可能会分到不同的分区.我 ...
- 使用IDEA写Python之pytest环境搭建及第一个程序编写
一.准备篇 Python环境:3.8.3 开发工具:IDEA,对你没有看错 二.IDEA下安装开发环境 1. python的下载 https://www.python.org/downloads/ P ...
- WEBAPI 增加身份验证
1,在Webapi项目下添加如下引用: Microsoft.AspNet.WebApi.Owin Owin Microsoft.Owin.Host.SystemWeb Microsoft.Owin.S ...