hdu4280 最大流DINIC
题意:
x最小的到x最大的点同一时间的最大运输量.
思路:
裸的最大流,不解释,注意一点,记得加上防爆栈.
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<stdio.h>
#include<string.h>
#include<queue>
#define N 300000
using namespace std;
struct star
{
int b,c,next;
}D[N];
struct mknum
{
int x,t;
}tou,xin;
queue<mknum>q;
int minn(int x,int y)
{
return x<y?x:y;
}
int list1[100005],list2[100005],tot;
int deep[100005];
void add(int a,int b,int c)
{
D[++tot].b=b;
D[tot].c=c;
D[tot].next=list1[a];
list1[a]=tot;
}
bool bfs(int s,int t,int n)
{
memset(deep,255,sizeof(deep));
deep[s]=0;
xin.x=s;
xin.t=0;
while(!q.empty())
q.pop();
q.push(xin);
while(!q.empty())
{
tou=q.front();
q.pop();
for(int k=list1[tou.x];k;k=D[k].next)
{
int to=D[k].b;
if(deep[to]==-1&&D[k].c)
{
xin.x=to;
xin.t=tou.t+1;
q.push(xin);
deep[xin.x]=xin.t;
}
}
} for(int i=0;i<=n;i++)
list2[i]=list1[i];
return deep[t]!=-1;
} int dfs(int s,int t,int flow)
{
if(s==t)
return flow;
int nowflow=0;
for(int k=list2[s];k;k=D[k].next)
{
list2[s]=k;
int to=D[k].b;
int c=D[k].c;
if(deep[to]!=deep[s]+1||!c)
continue;
if(nowflow==flow)
break;
int temp=dfs(to,t,minn(c,flow-nowflow));
nowflow+=temp;
D[k].c-=temp;
D[k^1].c+=temp;
if(nowflow==flow)
break;
}
if(nowflow==0)
deep[s]=0;
return nowflow;
} int DINIC(int s,int t,int n)
{
int ans=0;
while(bfs(s,t,n))
{
ans+=dfs(s,t,1000000000);
}
return ans;
} int main ()
{
int i,n,m,mx,mi,s,t,tt,a,b,c,x,y;
scanf("%d",&tt);
while(tt--)
{
scanf("%d%d",&n,&m);
mx=-10000000,mi=10000000;
for(i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
if(mx<x)
{
mx=x;
t=i;
}
if(mi>x)
{
mi=x;
s=i;
}
}
memset(list1,0,sizeof(list1));
tot=1;
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
add(a,b,c);
add(b,a,c);
}
printf("%d\n",DINIC(s,t,n));
}
return 0;
}
hdu4280 最大流DINIC的更多相关文章
- 网络流之最大流Dinic算法模版
/* 网络流之最大流Dinic算法模版 */ #include <cstring> #include <cstdio> #include <queue> using ...
- poj-1459-最大流dinic+链式前向星-isap+bfs+stack
title: poj-1459-最大流dinic+链式前向星-isap+bfs+stack date: 2018-11-22 20:57:54 tags: acm 刷题 categories: ACM ...
- 网络流之最大流Dinic --- poj 1459
题目链接 Description A power network consists of nodes (power stations, consumers and dispatchers) conne ...
- 网络最大流Dinic
1.什么是网络最大流 形象的来说,网络最大流其实就是这样一个生活化的问题:现在有一个由许多水管组成的水流系统,每一根管道都有自己的最大通过水流限制(流量),超过这个限制水管会爆(你麻麻就会来找你喝茶q ...
- HDU 3572 Task Schedule(拆点+最大流dinic)
Task Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 学习笔记 --- 最大流Dinic算法
为与机房各位神犇同步,学习下网络流,百度一下发现竟然那么多做法,最后在两种算法中抉择,分别是Dinic和ISAP算法,问过 CA爷后得知其实效率上无异,所以决定跟随Charge的步伐学习Dinic,所 ...
- Power Network(网络流最大流 & dinic算法 + 优化)
Power Network Time Limit: 2000MS Memory Limit: 32768K Total Submissions: 24019 Accepted: 12540 D ...
- ZOJ-2364 Data Transmission 分层图阻塞流 Dinic+贪心预流
题意:给定一个分层图,即只能够在相邻层次之间流动,给定了各个顶点的层次.要求输出一个阻塞流. 分析:该题直接Dinic求最大流TLE了,网上说采用Isap也TLE,而最大流中的最高标号预流推进(HLP ...
- POJ2112_Optimal Milking(网洛流最大流Dinic+最短路Flody+二分)
解题报告 农场有k个挤奶机和c头牛,每头牛到每一台挤奶机距离不一样,每台挤奶机每天最多挤m头牛的奶. 寻找一个方案,安排每头牛到某一挤奶机挤奶,使得c头牛须要走的全部路程中的最大路程的最小值. 要使每 ...
随机推荐
- WebRTC 音视频同步原理与实现
所有的基于网络传输的音视频采集播放系统都会存在音视频同步的问题,作为现代互联网实时音视频通信系统的代表,WebRTC 也不例外.本文将对音视频同步的原理以及 WebRTC 的实现做深入分析. 时间戳 ...
- 为什么要从 Linux 迁移到 BSD2
OpenZFS on Linux,是项目的 Linux 部分,目前有 345 个活跃的贡献者,有超过 5600 个提交,而且几乎每天都有提交!一些世界上最大的 CDN 和数据存储服务在 FreeBSD ...
- 选择 FreeBSD 而不是 Linux 的技术性原因1
Ports FreeBSD Ports 是一个惊人的工程壮举.NetBSD 的 pkgsrc (package source) 和 OpenBSD 的 ports collection 都源于 Fre ...
- Codeforces 1015E1 Stars Drawing (Easy Edition)
题面: 传送门 题目描述: 要求用十字星星来画题目给出的"星"图.如果不能用十字星星来画"星"图,输出-1:如果能,则输出要在图的哪个位置画相应大小的十字星图. ...
- golang实现已知三角形三点坐标,求三角形面积
代码如下: func GetTriangleAreaByVector(x vector.Vector3,y vector.Vector3,z vector.Vector3) float64 { //根 ...
- string与bson.ObjectId之间格式转换
string转bson.ObjectId bson.ObjectIdHex(string) bson.ObjectId转string日后再补
- Hive相关的命令
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...
- menuStrip鼠标滑过自动弹出
public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } private void 退出系统T ...
- Harry And Magic Box HDU - 5155
题目链接:https://vjudge.net/problem/HDU-5155#author=0 题意:在一个n*m的方格中要满足每一行每一列至少有一个珠宝,问总共有多少种方案. 思路:利用递推的思 ...
- P1014_Cantor表 (JAVA语言)
题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/11/1 , 1/21/2 , 1/31/3 , 1/41/4, 1/51/ ...