「LuoguP3376」 【模板】网络最大流
题目描述
如题,给出一个网络图,以及其源点和汇点,求出其网络最大流。
输入输出格式
输入格式:
第一行包含四个正整数N、M、S、T,分别表示点的个数、有向边的个数、源点序号、汇点序号。
接下来M行每行包含三个正整数ui、vi、wi,表示第i条有向边从ui出发,到达vi,边权为wi(即该边最大流量为wi)
输出格式:
一行,包含一个正整数,即为该网络的最大流。
输入输出样例
说明
时空限制: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。
题解
就是个模板题啊!QAQ
//其实就是挂个板子2333
/*
qwerta
P3376 【模板】网络最大流
Accepted
100
代码 C++,1.68KB
提交时间 2018-07-12 17:31:29
耗时/内存
140ms, 4847KB
*/
#include<cmath>
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
struct emm{
int e,f,v;
}a[];//邻接链表存边
int h[],cur[];//cur:当前弧优化(没什么用
int n,m,s,t;
int tot=;
inline int read()//快读
{
char ch=getchar();
int s=,x=;
while(ch<''||ch>''){if(ch=='-')s=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-;ch=getchar();}
return s*x;
}
inline void con(int l,int r,int w)//加边
{
a[++tot].f=h[l];
h[l]=tot;
//cur[l]=h[l];
a[tot].e=r;
a[tot].v=w;
return;
}
inline void scan()//读入,建图
{
n=read(),m=read(),s=read(),t=read();
for(int i=;i<=m;++i)
{
int z=read(),y=read(),l=read();
con(z,y,l);
con(y,z,);
}
return;
}
//Dinic
queue<int>q;//bfs的queue
int d[];//分层图的深度
inline bool bfs()
{
memset(d,,sizeof(d));//初始化
d[s]=;//标记源点深度
q.push(s);
for(int i=;i<=n;++i)cur[i]=h[i];//恢复cur数组
while(!q.empty())
{
int now=q.front();
q.pop();
//扩张
for(int i=h[now];i;i=a[i].f)
if(!d[a[i].e]&&a[i].v)//若未被标记过并且该边在残量网络中
{
d[a[i].e]=d[now]+;
q.push(a[i].e);
}
}
return d[t];//返回s,t是否联通
}
int dfs(int x,int al)
{
if(x==t||!al)return al;
int tot=;
for(int i=cur[x];i;i=a[i].f)
{
cur[x]=i;//当前弧优化
if(d[a[i].e]==d[x]+&&a[i].v)
{
int f=dfs(a[i].e,min(al,a[i].v));//往下找
if(f)//若非0
{
a[i].v-=f;
a[i^].v+=f;
tot+=f;
al-=f;
if(!al)break;
}
}
}
if(!tot)d[x]=-;//最有用的优化!(敲黑板
return tot;//返回流量值
}
inline void run()//运行
{
long long ans=;
while(bfs())ans+=dfs(s,);
cout<<ans;
return;
}
int main()//超短主函数(当年码风真奇怪orz
{
scan();
run();
return ;
}
「LuoguP3376」 【模板】网络最大流的更多相关文章
- 「JSOI2014」电信网络
「JSOI2014」电信网络 传送门 一个点选了就必须选若干个点,最大化点权之和,显然最大权闭合子图问题. 一个点向它范围内所有点连边,直接跑最大权闭合子图即可. 参考代码: #include < ...
- 【洛谷 p3376】模板-网络最大流(图论)
题目:给出一个网络图,以及其源点和汇点,求出其网络最大流. 解法:网络流Dinic算法. 1 #include<cstdio> 2 #include<cstdlib> 3 #i ...
- [模板]网络最大流 & 最小费用最大流
我的作业部落有学习资料 可学的知识点 Dinic 模板 #define rg register #define _ 10001 #define INF 2147483647 #define min(x ...
- Note -「计算几何」模板
尚未完整测试,务必留意模板 bug! /* Clearink */ #include <cmath> #include <queue> #include <cstdi ...
- LOJ 2547 「JSOI2018」防御网络——思路+环DP
题目:https://loj.ac/problem/2547 一条树边 cr->v 会被计算 ( n-siz[v] ) * siz[v] 次.一条环边会被计算几次呢?于是去写了斯坦纳树. #in ...
- LOJ #2547 Luogu P4517「JSOI2018」防御网络
好像也没那么难写 LOJ #2547 Luogu P4517 题意 在一棵点仙人掌中等概率选择一个点集 求选出点集的斯坦纳树大小的期望 定义点仙人掌为不存在一个点在多个简单环中的连通图 斯坦纳树为在原 ...
- 【LOJ】 #2547. 「JSOI2018」防御网络
题解 如果只是一棵树的话,那么就枚举每条边,分成两部分大小为\(a\)和\(b\) 那么这条边被统计的方案数是\((2^a - 1)(2^b - 1)\) 如果是一个环的话,我们枚举环上至少有\(N ...
- 「BJWC2010」模板严格次小生成树
题目描述 小 \(C\) 最近学了很多最小生成树的算法,\(Prim\) 算法.\(Kruskal\) 算法.消圈算法等等.正当小\(C\)洋洋得意之时,小\(P\)又来泼小\(C\)冷水了.小\(P ...
- P3376 [模板] 网络最大流
https://www.luogu.org/blog/ONE-PIECE/wang-lao-liu-jiang-xie-zhi-dinic EK 292ms #include <bits/std ...
随机推荐
- 在.NET使用JSON作为数据交换格式【转】
http://www.cnblogs.com/zhoufoxcn/archive/2011/03/16/2515611.html 我们知道在.NET中我们有多种对象序列化的方式,如XML方式序列化.B ...
- ItelliJ IDEA开发工具使用—创建一个web项目
转 http://blog.csdn.net/wangyang1354/article/details/50452806 最近想用IDEA编辑器开发,但是平时都用MyEclipse和eclipse ...
- phonegap工程搭建基础(一)
官网:http://cordova.apache.org 一.环境配置 1. 安装Cordova on OS X and Linux: $ sudo npm install -g cord ...
- Pro Android学习笔记(一三七):Home Screen Widgets(3):配置Activity
文章转载仅仅能用于非商业性质,且不能带有虚拟货币.积分.注冊等附加条件.转载须注明出处http://blog.csdn.net/flowingflying/以及作者@恺风Wei. 通过widget定义 ...
- docker安全最佳实践概述
/************************************************* * Author : Samson * Date : 08/07/2015 * Test plat ...
- 【Sprint3冲刺之前】TDzhushou软件项目测试计划书
TDzhushou软件测试计划文档 文档编号:2014-5-8 产品版本:1.1 产品名称:TDzhushou 文 档 作 者: 解凤娇 日期:2014-5-4 软件测试计划 目录 第一章 ...
- 关于Yapi出现 请求异常,请检查 chrome network 错误信息...
项目开发中由于后台接口还没有,打算使用mock模拟本地数据,配置好接口,运行接口出现 检查了cross-request插件是否安装以及激活,发现没有问题,最后发现是我的请求地址写错了,,这里请求地址需 ...
- YARN和MapReduce的内存设置參考
怎样确定Yarn中容器Container,Mapreduce相关參数的内存设置,对于初始集群,由于不知道集群的类型(如cpu密集.内存密集)我们须要依据经验提供给我们一个參考配置值,来作为基础的配置. ...
- 啥是Restful?
在Web设计与开发中,经常会看到Restful这个概念.对HTTP没有深入了解的我看到这个,基本一带而过. 其实既然只是概念,理解其中的意思就OK. Restful 1. 一种Web设计/架构方式 2 ...
- 03 svn 权限与用户管理
一:权限管理 (1)svn仓库各个作用 svnserve.conf [svn仓库的配置文件] password [svn仓库账号和密码配置文件] authz [svn仓库的访问权限] (2)访问权限 ...