hdu 4280 最大流 sap模板
给你岛的坐标求最西边到最东边的最大流
/*
最大流模板
sap
*/
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std; const int MAXN=;//点数的最大值
const int MAXM=;//边数的最大值
const int INF=0x3f3f3f3f; struct Node
{
int from,to,next;
int cap;
}G[MAXM];
int tol;
int head[MAXN];
int dep[MAXN];
int gap[MAXN];//gap[x]=y :说明残留网络中dep[i]==x的个数为y int n;//n是总的点的个数,包括源点和汇点 void init()
{
tol=;
memset(head,-,sizeof(head));
} void build(int u,int v,int w)
{
G[tol].from=u;
G[tol].to=v;
G[tol].cap=w;
G[tol].next=head[u];
head[u]=tol++;
G[tol].from=v;
G[tol].to=u;
G[tol].cap=;
G[tol].next=head[v];
head[v]=tol++;
}
void BFS(int st,int ed)
{
memset(dep,-,sizeof(dep));
memset(gap,,sizeof(gap));
gap[]=;
int que[MAXN];
int left,right;
left=right=;
dep[ed]=;
que[right++]=ed;
while(left!=right)
{
int u=que[left++];
if(left==MAXN)left=;
for(int i=head[u];i!=-;i=G[i].next)
{
int v=G[i].to;
if(dep[v]!=-)continue;
que[right++]=v;
if(right==MAXN)right=;
dep[v]=dep[u]+;
++gap[dep[v]];
}
}
}
int SAP(int st,int ed)
{
int res=;
BFS(st,ed);
int cur[MAXN];
int S[MAXN];
int top=;
memcpy(cur,head,sizeof(head));
int u=st;
int i;
while(dep[st]<n){
if(u==ed){
int temp=INF;
int inser;
for(i=;i<top;i++)
if(temp>G[S[i]].cap){
temp=G[S[i]].cap;
inser=i;
}
for(i=;i<top;i++){
G[S[i]].cap-=temp;
G[S[i]^].cap+=temp;
}
res+=temp;
top=inser;
u=G[S[top]].from;
}
if(u!=ed&&gap[dep[u]-]==)//出现断层,无增广路
break;
for(i=cur[u];i!=-;i=G[i].next)
if(G[i].cap!=&&dep[u]==dep[G[i].to]+)
break;
if(i!=-){
cur[u]=i;
S[top++]=i;
u=G[i].to;
}
else{
int min=n;
for(i=head[u];i!=-;i=G[i].next){
if(G[i].cap==)continue;
if(min>dep[G[i].to]){
min=dep[G[i].to];
cur[u]=i;
}
}
--gap[dep[u]];
dep[u]=min+;
++gap[dep[u]];
if(u!=st)u=G[S[--top]].from;
}
}
return res;
} int main()
{
int st,ed;
int m;
int u,v,z;
int T;
scanf("%d",&T); while(T--){
init();
scanf("%d%d",&n,&m);
int minx=;
int maxx=-;
int x,y;
for(int i=;i<=n;i++){
scanf("%d%d",&x,&y);
if(minx>x){
minx=x;
st=i;
}
if(maxx<x){
maxx=x;
ed=i;
}
}
while(m--){
scanf("%d%d%d",&u,&v,&z);
build(u,v,z);
build(v,u,z);
}
//n一定是点的总数,这是使用SAP模板需要注意的
int ans=SAP(st,ed);
printf("%d\n",ans);
}
return ;
}
hdu 4280 最大流 sap模板的更多相关文章
- hdu 4280 最大流sap
模板套起来 1 5 7 //5个结点,7个边 3 3 //坐标 3 0 3 1 0 0 4 5 1 3 3 //相连的结点和流 2 3 4 2 4 3 1 5 6 4 5 3 1 4 4 3 4 2 ...
- hdu 4280 最大流
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4280 #pragma comment(linker, "/STACK:1024000000, ...
- hdu 3605 最大流sap+二进制思想(啊啊)
/*因为n非常大如果正常建边的话会超内存,每种状态的数目共2--10种状状体记录起来,源点与状态建边权值为状态数,状态与星球建边,星球与汇点建边*/ #include<stdio.h> # ...
- HDU 4280 Island Transport(网络流,最大流)
HDU 4280 Island Transport(网络流,最大流) Description In the vast waters far far away, there are many islan ...
- HDU 4280 Island Transport(无向图最大流)
HDU 4280:http://acm.hdu.edu.cn/showproblem.php?pid=4280 题意: 比较裸的最大流题目,就是这是个无向图,并且比较卡时间. 思路: 是这样的,由于是 ...
- 【网络流#1】hdu 3549 - 最大流模板题
因为坑了无数次队友 要开始学习网络流了,先从基础的开始,嗯~ 这道题是最大流的模板题,用来测试模板好啦~ Edmonds_Karp模板 with 前向星 时间复杂度o(V*E^2) #include& ...
- 网络流 最大流SAPkuangbin模板
hdu 1532 求1~n的最大流 #include<stdio.h> #include<string.h> #include<algorithm> #includ ...
- HDU 4280 Island Transport(网络流)
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=4280">http://acm.hdu.edu.cn/showproblem.php ...
- hdu 4289 最大流拆点
大致题意: 给出一个又n个点,m条边组成的无向图.给出两个点s,t.对于图中的每个点,去掉这个点都需要一定的花费.求至少多少花费才能使得s和t之间不连通. 大致思路: 最基础的拆点最大 ...
随机推荐
- Java_Day3(下)
Java learning_Day3(下) 本人学习视频用的是马士兵的,也在这里献上 <链接:https://pan.baidu.com/s/1qKNGJNh0GgvlJnitTJGqgA> ...
- Python入门10 —— for循环
1.字符串依次取值 students = ['egon', 'lxx', 'alex'] i = 0 while i < 3: print(students[i]) i += 1 2.针对循环取 ...
- Real-time Compressive Tracking
这是RTC算法的文献blog Real-time Compressive Tracking Kaihua Zhang1, Lei Zhang1, Ming-Hsuan Yang2 1Dept. of ...
- 阿里云Linux服务器安装Redis 完整步骤(包括处理远程连接问题)
跟随本篇文章步骤,包你成功安装并连接使用. 1.获取redis资源 wget http://download.redis.io/releases/redis-4.0.8.tar.gz 2.解压 tar ...
- 《JavaScript ES6 函数式编程入门经典》--推荐指数⭐⭐⭐
这本书比较基础认真看完再自己写点demo一个双休日就差不多, 总体来说看完还是有收获的,会激起一些你对函数编程的兴趣 主要目录如下: 第1章 函数式编程简介 11.1 什么是函数式编程?为何它重要 1 ...
- 基于Web的网络商城项目设计与实现【SSM+Bootstrap+Vue】
[Spring+SpringMVC+MyBatis+Bootstrap+Vue] 演示:线路1 线路2 1.系统功能介绍 网上商城系统 是一个功能完善的在线购物系统 - ,主要为在线销售和在线购物服 ...
- EF中的实体关系
导航属性的理解: 指数据库的表所对应的实体类,除了要有每个字段所对应的属性之外,还应该有一个与之有关联的表的属性,一对一的关系就是关联表的类型,一对多的关系就是关联表的类型的ICollection的泛 ...
- 番外:克隆本地PDB中其他参数和子句的说明
基于版本:19c (12.2.0.3) AskScuti 创建方法:克隆本地PDB(从本地其他PDB创建新的PDB) 对应路径:Creating a PDB --> Cloning --> ...
- Itext相关知识
最近需求用到office和pdf相关知识,office使用poi操作的,pdf则使用Itext操作 Itext官网: http://itextpdf.com/ Itext7相关使用示例:https:/ ...
- codeforces 1282C. Petya and Exam (贪心)
链接:https://codeforces.com/contest/1282/problem/C 题意: 有一个人参加考试,考试只有两种题,一种是简单题,每道题耗时固定为a:另一种是困难题,每道题耗 ...