给你岛的坐标求最西边到最东边的最大流

 /*
最大流模板
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模板的更多相关文章

  1. 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 ...

  2. hdu 4280 最大流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4280 #pragma comment(linker, "/STACK:1024000000, ...

  3. hdu 3605 最大流sap+二进制思想(啊啊)

    /*因为n非常大如果正常建边的话会超内存,每种状态的数目共2--10种状状体记录起来,源点与状态建边权值为状态数,状态与星球建边,星球与汇点建边*/ #include<stdio.h> # ...

  4. HDU 4280 Island Transport(网络流,最大流)

    HDU 4280 Island Transport(网络流,最大流) Description In the vast waters far far away, there are many islan ...

  5. HDU 4280 Island Transport(无向图最大流)

    HDU 4280:http://acm.hdu.edu.cn/showproblem.php?pid=4280 题意: 比较裸的最大流题目,就是这是个无向图,并且比较卡时间. 思路: 是这样的,由于是 ...

  6. 【网络流#1】hdu 3549 - 最大流模板题

    因为坑了无数次队友 要开始学习网络流了,先从基础的开始,嗯~ 这道题是最大流的模板题,用来测试模板好啦~ Edmonds_Karp模板 with 前向星 时间复杂度o(V*E^2) #include& ...

  7. 网络流 最大流SAPkuangbin模板

    hdu 1532 求1~n的最大流 #include<stdio.h> #include<string.h> #include<algorithm> #includ ...

  8. HDU 4280 Island Transport(网络流)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=4280">http://acm.hdu.edu.cn/showproblem.php ...

  9. hdu 4289 最大流拆点

    大致题意:     给出一个又n个点,m条边组成的无向图.给出两个点s,t.对于图中的每个点,去掉这个点都需要一定的花费.求至少多少花费才能使得s和t之间不连通. 大致思路:     最基础的拆点最大 ...

随机推荐

  1. 18新生赛 4. Deal

    题目描述:双十一过后,syx发现自己快要吃土了.但是机智的他决定理财.他预测了将来n天的比特币行情,发现有涨有跌,有跌有涨.手里的钱只要在比特币的浪潮中经历沉浮,低价收入,高价卖出,就可以轻易割到别人 ...

  2. 优化公式排版和Beamer相关知识

    做优化的同学可能会碰到排列形如 max    ******* s.t.   ***** = *        ***** > ***        ...    的格式 既要要求 max 和 s ...

  3. HDU 4544 湫湫系列故事——消灭兔子 (优先队列)

    湫湫减肥  越减越肥!    最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏.  游戏规则很简单,用箭杀死免子即可.  箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子 ...

  4. loj6277 数列分块入门题1

    裸题分块. #include <bits/stdc++.h> using namespace std; ],b[],n,m,t1,t2,t3,t4,sq; int main(){ ios: ...

  5. js集合

    var list = {};//声明 List[0] = 52;//赋值 List[1] = 57;//赋值

  6. IDEA配置tomcat日志乱码

    第一步(tomcat7/8) tomcat:找到tomcat文件夹下的conf文件夹,去修改里面的logging.properties文件 两种修改方式(第一种方法不行再用第二种): 将文件中的5个U ...

  7. HDR视频生态圈追踪

    截止目前,HDR视频生态圈已经产生了巨大的变化.本文将更新旧有的HDR生态圈范围,并更清晰地描述当前HDR视频生态圈.本文译自The HDR video ecosystem tracker,原作者为 ...

  8. git回退版本: 回退本地代码版本 + 回退服务器代码版本

    1.回退本地代码版本 借助IDEA开发工具回退版本,点击Version Control ,查看历史版本号: 右击想要回退的版本号,选择Reset Current Branch hear... 选择 H ...

  9. 杭电oj_1713——相遇周期(java实现)

    question:相遇周期 思路: 首先将两个分数化为最简形式(也就是分子分母同时除以最大公约数) 然后题意是要求两个分数的最小公倍数 借助以下两个公式,就可以求出结果 1.最小公倍数*最大公约数 = ...

  10. 微信公众号h5页面alert去掉域名

    h5页面内嵌到微信公众号提示信息alert的时候会显示域名,去掉域名显示重写alert方法: window.alert = function(name){ var iframe = document. ...