hdu4280网络流之dinic
这题就是个模板题,不过我是第一次写dinic,好久没用链式前向星又不会了。。。
时间:9126ms
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define pi acos(-1)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=,inf=; struct edge{
int to,cap,next;
}e[N<<];
int s,t,cnt;
int dis[N],cur[N];
int head[N];
void add(int u,int v,int c)//链式前向星
{
e[cnt].to=v;
e[cnt].cap=c;
e[cnt].next=head[u];
head[u]=cnt++;
}
bool bfs()
{
memset(dis,-,sizeof dis);
dis[s]=;
queue<int>q;
q.push(s);
while(!q.empty()){
int x=q.front();
q.pop();
for(int i=head[x];i!=-;i=e[i].next)//与x相连的所有点
{
int temp=e[i].to;
if(dis[temp]==-&&e[i].cap>)//这一条边还有增广的可能
{
dis[temp]=dis[x]+;
q.push(temp);
}
}
}
return dis[t]>-;//找到增广路
}
int dfs(int x,int cap)
{
if(x==t)return cap;
int flow=;
for(int i=head[x];i!=-;i=e[i].next)
{
int temp=e[i].to;
if(dis[temp]==dis[x]+&&e[i].cap)
{
int f=dfs(temp,min(cap-flow,e[i].cap));
e[i].cap-=f;//正向边
e[i^].cap+=f;//反向边
flow+=f;
if(flow==cap)break;
}
}
if(!flow)dis[x]=-;//不加会超时
return flow;
}
int max_flow()
{
int flow=,f;
while(bfs()){//还有增广路
while((f=dfs(s,inf))>)flow+=f;//进行多路增广
}
return flow;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
int k,n,m;
cin>>k;
while(k--){
cin>>n>>m;
int smin=inf,tmax=-inf;
s=t=;
int a,b,c;
for(int i=;i<=n;i++)
{
cin>>a>>b;
if(a<=smin)smin=a,s=i;
if(a>=tmax)tmax=a,t=i;
}
cnt=;
memset(head,-,sizeof head);
while(m--){
cin>>a>>b>>c;
add(a,b,c);//正向边
add(b,a,c);//反向边
}
int ans=max_flow();
cout<<ans<<endl;
}
return ;
}
hdu4280网络流之dinic的更多相关文章
- [知识点]网络流之Dinic算法
// 此博文为迁移而来,写于2015年2月6日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vrg4.html ...
- [无效]网络流之Dinic算法
// 此博文为迁移而来,写于2015年2月6日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vrg4.html UPDA ...
- 「CODVES 1922 」骑士共存问题(二分图的最大独立集|网络流)&dinic
首先是题目链接 http://codevs.cn/problem/1922/ 结果发现题目没图(心情复杂 然后去网上扒了一张图 大概就是这样了. 如果把每个点和它可以攻击的点连一条边,那问题就变成了 ...
- 网络流 KM dinic
study from: https://blog.csdn.net/A_Comme_Amour/article/details/79356220 1. Edmonds-Karp 无优化 最坏时间复杂度 ...
- 初涉网络流[EK&dinic]
主要还是板子 Edmonds-Karp 从S开始bfs,直到找到一条到达T的路径后将该路径增广,并重复这一过程. 在处理过程中,为了应对“找到的一条路径把其他路径堵塞”的情况,采用了建反向弧的方式来实 ...
- 网络流之Dinic算法
初学网络流.存一下Dinic板子. 复杂度O(n^2*m) UVA - 1515 Pool construction 把每个草地与 S 相连,花费为dig,每个洞与 T 相连,花费为 然后对于每个两个 ...
- 网络流 之 dinic 算法
网络流指的是:网络流(network-flows)是一种类比水流的解决问题方法.(类似于水管群,有一个源点(水无限多),和一个汇点,最大流就代表这个点水管群(边集)每秒最大能送道汇点的水量) 这个怎么 ...
- 初探网络流:dinic/EK算法学习笔记
前记 这些是初一暑假的事: "都快初二了,连网络流都不会,你好菜啊!!!" from 某机房大佬 to 蒟蒻我. flag:--NOIP后要学网络流 咕咕咕------------ ...
- Secret Milking Machine POJ - 2455 网络流(Dinic算法---广搜判断+深搜增广)+时间优化+二分
题意: 第一行输入N M C ,表示从1到N有M条无向边,现在要从1走到N 走C次完全不同的路径,求最长边的最小值.下面M行是从a点到b点的距离. 建图: 题上说从两点之间可以有多条边,问的是从1~N ...
随机推荐
- yii2框架dropDownList的下拉菜单用法介绍
Yii2.0 默认的 dropdownlist 的使用方法. 代码如下 复制代码 <?php echo $form->field($model, 'name[]')->dropDo ...
- VirtualBox vbox not found
VirtualBox vbox file not found Problem When I opened virtualbox, Today, it showed "inaccessible ...
- Tunnelblick 覆盖安装失败
公司搬家, jira, sourceTree都链接不上了,发现是VPN断了的原因,需要重新链接VPN Tunnelblick坏掉了,覆盖安装总是提示安装失败,安装超时 nil,搜索一大堆文章, 看了这 ...
- sklearn学习笔记(一)——数据预处理 sklearn.preprocessing
https://blog.csdn.net/zhangyang10d/article/details/53418227 数据预处理 sklearn.preprocessing 标准化 (Standar ...
- 爬虫Scrapy框架
安装scrapy 在安装过程中报错:解决方案 通过在https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted,然后下载: CP后是python 版本,32 ...
- Linux下tomcat启动项目原因排查
先停掉tomcat服务器: 然后把文件删除: 这时候启动服务器: 看下有没有启动成功: 接着把重新优化过的代码用X ftp传上去. 等几分钟就可以. 如果老是出现问题,就去catalina.out文件 ...
- JavaScript类库汇总
日期处理Moment.js http://momentjs.cn/ http://momentjs.com/ nodejslinq,jslinq http://jslinq.codepl ...
- in 和 or 的效率问题
select * from table where col in (2,3,4,5,6) select * from table where col=2 or col=3 or col=4 or co ...
- mysql数据库表的查询操作-总结
转自:https://www.cnblogs.com/whgk/p/6149009.html 序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VA ...
- 认识与设计Serverless(一)
一.什么是Serverless 定义:Serverless是一种无服务器的架构,区别于传统的Baas,SAAS,作为FAAS(函数即服务)而存在,函数由事件驱动触发并按需调用. 按需调用:区别于传统的 ...