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 ...
随机推荐
- PHP unlink()函数,删除文件
定义和用法 unlink() 函数删除文件. 若成功,则返回 true,失败则返回 false. 语法 unlink(filename,context) 参数 描述 filename 必需.规定要删除 ...
- thinkphp中 volist循环的 mod取值的问题
<ul> <volist name="data" id="arr" key="k" mod="2"&g ...
- Fast and Accurate Traffic Matrix Measurement Using Adaptive Cardinality Counting
paper-CaiPan.pdf http://conferences.sigcomm.org/sigcomm/2005/paper-CaiPan.pdf
- Nginx高级玩法
1. Nginx获取自定义消息头 .nginx是支持读取非nginx标准的用户自定义header的,但是需要在http或者server下开启header的下划线支持: underscores_in_h ...
- Mybatis三剑客之mybatis-generator配置
mybatis插件在这里: 然后把generatorConfig.xml文件放在resources下: <?xml version="1.0" encoding=" ...
- mysql 数据操作 多表查询 子查询 带比较运算符的子查询
带比较运算符的子查询 #比较运算符:=.!=.>.>=.<.<=.<> #查询大于所有人平均年龄的员工名与年龄 思路 先拿到所有人的平均年龄然后 再用另外一条sql ...
- Winform 下使用WebBrowser的HTML编辑控件—WinHtmlControl 在win7 IE9下的问题
问题是这样的,有一个需要用到富文本的地方,由于是winform的程序,而且程序是上一代老员工留下的,错误百出,现在要尽量修复,至少保证能正常使用,于是就开始一点点问题修复. 在win7 64位系统下出 ...
- Django restframwork获取列表详情
z哎Django restframwork中就有一个类可以获取列表的详情内容,只有两行代码就可以搞定,在浏览器测试是ok的.但是这样的接口给前端,前端点击详情然后会将models.表名.objects ...
- 4.11 Routing -- Loading/Error Substates
除了在上节中描述的技术,Ember路由器通过使用error和loading substates为自定义异步跳转提供强大而可重写的约定. 一.loading Substates 1. 在跳转过程中,Em ...
- 在GUI程序中使用控制台的两种方法
win32程序启用控制台(控制台文件名:conout$,conin$,conerr$) //添加控制台,加入在程序构造函数中 AllocConsole(); freopen("conin$& ...