(网络流) Island Transport --Hdu -- 4280
链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4280
源点是West, 汇点是East, 用Dinic带入求就好了
代码:要用c++提交
#pragma comment(linker, "/STACK:102400000,102400000") ///手动开大栈区
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
using namespace std; #define N 100005
#define INF 0x3fffffff struct node {int v, flow, next;} a[N<<]; int Layer[N], Head[N], cnt, n, m; void Init()
{
cnt = ;
memset(Head, -, sizeof(Head));
} void Add(int u, int v, int flow)
{
a[cnt].v = v;
a[cnt].flow = flow;
a[cnt].next = Head[u];
Head[u] = cnt++;
} bool BFS(int Start, int End)
{
queue<int>Q;
Q.push(Start); memset(Layer, , sizeof(Layer));
Layer[Start] = ; while(Q.size())
{
int u = Q.front(); Q.pop(); if(u==End) return true; for(int i=Head[u]; i!=-; i=a[i].next)
{
int v = a[i].v; if(!Layer[v] && a[i].flow)
{
Layer[v] = Layer[u] + ;
Q.push(v);
}
}
}
return false;
}
int DFS(int u, int MaxFlow, int End)
{
if(u==End) return MaxFlow; int uflow=; for(int i=Head[u]; i!=-; i=a[i].next)
{
int v = a[i].v;
if(Layer[v]==Layer[u]+ && a[i].flow)
{
int flow = min(a[i].flow, MaxFlow-uflow);
flow = DFS(v, flow, End); a[i].flow -= flow;
a[i^].flow += flow;
uflow += flow; if(uflow==MaxFlow) break;
}
} if(uflow==) Layer[u] = ; return uflow;
}
int Dinic(int Start, int End)
{
int MaxFlow=; while(BFS(Start, End)==true)
MaxFlow += DFS(Start, INF, End); return MaxFlow;
} int main()
{
int t;
scanf("%d", &t);
while(t--)
{
int i, u, v, flow, East=-INF, West=INF, Start, End, x, y; scanf("%d%d", &n, &m); Init();
for(i=; i<=n; i++)
{
scanf("%d%d", &x, &y);
if(West > x)
{
West = x;
Start = i;
}
if(East < x)
{
East = x;
End = i;
}
} for(i=; i<=m; i++)
{
scanf("%d%d%d", &u, &v, &flow);
Add(u, v, flow);
Add(v, u, flow);
} printf("%d\n", Dinic(Start, End));
}
return ;
}
(网络流) Island Transport --Hdu -- 4280的更多相关文章
- G - Island Transport - hdu 4280(最大流)
题意:有N个岛屿,M条路线,每条路都连接两个岛屿,并且每条路都有一个最大承载人数,现在想知道从最西边的岛到最东面的岛最多能有多少人过去(最西面和最东面的岛屿只有一个). 分析:可以比较明显的看出来是一 ...
- HDU 4280 Island Transport(网络流,最大流)
HDU 4280 Island Transport(网络流,最大流) Description In the vast waters far far away, there are many islan ...
- HDU 4280 Island Transport
Island Transport Time Limit: 10000ms Memory Limit: 65536KB This problem will be judged on HDU. Origi ...
- Hdu 4280 Island Transport(最大流)
Island Transport Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- HDU 4280 Island Transport(无向图最大流)
HDU 4280:http://acm.hdu.edu.cn/showproblem.php?pid=4280 题意: 比较裸的最大流题目,就是这是个无向图,并且比较卡时间. 思路: 是这样的,由于是 ...
- HDU 4280 Island Transport(dinic+当前弧优化)
Island Transport Description In the vast waters far far away, there are many islands. People are liv ...
- Island Transport
Island Transport http://acm.hdu.edu.cn/showproblem.php?pid=4280 Time Limit: 20000/10000 MS (Java/Oth ...
- HDU4280:Island Transport(最大流)
Island Transport Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- HDU 4280 ISAP+BFS 最大流 模板
Island Transport Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
随机推荐
- js中的Event对象
event代表事件的状态,例如触发event对象的元素,鼠标的位置及状态,按下的键等等 event对象只在事件发生的过程中才有效. <!DOCTYPE html><html lang ...
- 数据库索引&数据页
索引的好处 索引带来的益处可能很多读者会认为只是"能够提高数据检索的效率,降低数据库的IO成本". 确实,在数据库中表的某个字段创建索引,所带来的最大益处就是将该字段作为检索条件时 ...
- oracle 字符处理
oracle获取字符串长度函数length()和hengthb() lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 length(string)计算stri ...
- 关于插入date型数据
create table student (name varchar2(10) not null primary key , enrolldate date not null);//创建student ...
- 从RTTI谈C++的向下转型
转自:http://blog.chinaunix.net/uid-28541347-id-4251713.html 从RTTI谈C++的向下转型 1.什么是RTTI? RTTI 是“Runtime T ...
- SQL Server优化50法(转载)
虽然查询速度慢的原因很多,但是如果通过一定的优化,也可以使查询问题得到一定程度的解决. 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题 ...
- OpenStack的架构详解(转)
OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其宗旨在于,帮助组织运行为虚拟计算或存储服务的云,为公有云.私有云,也为大云.小云提供可扩展的.灵活的 ...
- Django之常用命令以及问题汇总
基本命令 1.新建一个django项目 django-admin.py startproject project-name 2.新建一个app python manage.py startapp ap ...
- 20172325 2017-2018-2 《Java程序设计》第六周学习总结
20172325 2017-2018-2 <Java程序设计>第六周学习总结 教材学习内容总结 1.利用[ ]建立一个数组,整列数据可以通过数组名引用,数组中的每个元素则可以通过其在数组中 ...
- tp5链接访问
方法名:admin/DayActive/statistic 访问:admin/day_active/statistic