题目链接:点击查看

题目大意:给出n个岛屿,由m条无向边连接而成,现在要从最西边的岛屿到达最东边的岛屿,问最大流量为多少

题目分析:最大流模板题,只不过这个毒瘤题卡掉了dinic,只能去网上找了个SAP的模板,有一说一,真的好用

代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e5+100;//点数的最大值const int M=2e5+100;//边数的最大值struct Node
{int from,to,next;int cap;
}edge[M];int tol,head[N],dep[N],gap[N];//gap[x]=y :说明残留网络中dep[i]==x的个数为yint n;//n是总的点的个数,包括源点和汇点void init()
{tol=0;memset(head,-1,sizeof(head));
}void addedge(int u,int v,int w)
{edge[tol].from=u;edge[tol].to=v;edge[tol].cap=w;edge[tol].next=head[u];head[u]=tol++;edge[tol].from=v;edge[tol].to=u;edge[tol].cap=w;edge[tol].next=head[v];head[v]=tol++;
}
void BFS(int start,int end)
{memset(dep,-1,sizeof(dep));memset(gap,0,sizeof(gap));gap[0]=1;int que[N];int front,rear;front=rear=0;dep[end]=0;que[rear++]=end;while(front!=rear){int u=que[front++];if(front==N)front=0;for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].to;if(dep[v]!=-1)continue;que[rear++]=v;if(rear==N)rear=0;dep[v]=dep[u]+1;++gap[dep[v]];}}
}
int SAP(int start,int end)
{int res=0;BFS(start,end);int cur[N];int S[N];int top=0;memcpy(cur,head,sizeof(head));int u=start;int i;while(dep[start]<n){if(u==end){int temp=inf;int inser;for(i=0;i<top;i++)if(temp>edge[S[i]].cap){temp=edge[S[i]].cap;inser=i;}for(i=0;i<top;i++){edge[S[i]].cap-=temp;edge[S[i]^1].cap+=temp;}res+=temp;top=inser;u=edge[S[top]].from;}if(u!=end&&gap[dep[u]-1]==0)//出现断层,无增广路break;for(i=cur[u];i!=-1;i=edge[i].next)if(edge[i].cap!=0&&dep[u]==dep[edge[i].to]+1)break;if(i!=-1){cur[u]=i;S[top++]=i;u=edge[i].to;}else{int min=n;for(i=head[u];i!=-1;i=edge[i].next){if(edge[i].cap==0)continue;if(min>dep[edge[i].to]){min=dep[edge[i].to];cur[u]=i;}}--gap[dep[u]];dep[u]=min+1;++gap[dep[u]];if(u!=start)u=edge[S[--top]].from;}}return res;
}int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);int w;cin>>w;while(w--){init();int m,st,ed,mmin=inf,mmax=-inf;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){int x,y;scanf("%d%d",&x,&y);if(x<mmin){mmin=x;st=i;}if(x>mmax){mmax=x;ed=i;}}while(m--){int u,v,w;scanf("%d%d%d",&u,&v,&w);addedge(u,v,w);}printf("%d\n",SAP(st,ed));}return 0;
}

HDU - 4280 Island Transport(最大流)相关推荐

  1. HDU Problem - 4280 Island Transport(最大流)

    题目链接 Problem Description In the vast waters far far away, there are many islands. People are living ...

  2. hdu4280 Island Transport 网络流最大流 Dinic算法高效模板

    Island Transport In the vast waters far far away, there are many islands. People are living on the i ...

  3. HDU 1385 Minimum Transport Cost

    HDU 1385 Minimum Transport Cost 我的WA代码 AC的代码 我的WA代码 我的大概思路就是,如果i->j,如果找到一个中间点k就直接简单的将path[i][j]=k ...

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

  5. HDU 5383 Yu-Gi-Oh!(费用流)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5383 题意:游戏王同调召唤的方法,每只怪兽有等级和攻击力,两种不同类型的怪兽可以在一定限制下召唤出某一 ...

  6. HDU 3618 Good Plan(费用流)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3618 Problem Description FJ has two same houses for r ...

  7. 【HDU】4411 Arrest 费用流

    传送门:[HDU]4411 Arrest 题目分析:题目的意思一开始没看懂= =...题意大致为:派出至多K个警队遵守先灭小的再灭老的的原则将N个城市的帮派全端了(要灭编号大的必须要先灭编号小的).且 ...

  8. HDU 3549 Flow Problem(最大流模版EK算法)

    题目链接 第一道最大流,赤裸裸的模版题,刚好可以熟悉模版用.今天看了一下最大流,就看了一个EK算法,感觉有点和二分图匹配算法有点相似,对于最大流问题有点了解了,不过为什么这么做,也不是 很懂,只是把代 ...

  9. HDU 4411 Arrest(费用流)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4411 题意:有n+1个城市,编号0到n.其中警察局在0号城市,1到n号城市中每个城市都有一个小偷.现在 ...

最新文章

  1. 读书:个人成长 -- 即兴演讲
  2. C#连接sqlServer数据库详解
  3. 《计算机科学概论(第12版)》—第0章0.3节学习大纲
  4. 蚂蚁金服OceanBase性价比是传统数据库的十倍
  5. OpenCV--模板匹配与滑动窗口(单匹配或多匹配)
  6. 近期 AI 领域,招聘招生信息汇总
  7. STC学习:导航按键与数字按键综合控制数码管
  8. lamp mysql登录_LAMP 3.2 mysql登陆
  9. Matlab Robitic Toolbox学习笔记Day1
  10. Autocad ET扩展工具汉化
  11. 超分算法在 WebRTC 高清视频传输弱网优化中的应用
  12. HDU 4939 DP
  13. window引导配置bcdedit
  14. 法拉科机器人接头_图解FANUC机器人I/O信号板接口定义与拆装
  15. jekyll php,使用Jekyll在Github上搭建个人博客(文章分类索引)
  16. 【零基础Eviews实例】02自相关(序列相关)的检验与修正
  17. 商城项目解析(前端页面知识,用户如何访问服务器,hosts的修改,nginx)
  18. 企业如何利用生产制造业ERP管理系统做好采购管理?
  19. 如何在JS中计算扑克牌中的顺子、对子、半顺、豹子、杂六
  20. C++中有哪些类型转换方式

热门文章

  1. Sentinel授权规则及规则持久化
  2. 自定义镜像-镜像结构
  3. 认识微服务-SpringCloud
  4. redis 都有哪些数据类型?分别在哪些场景下使用比较合适?
  5. 释放锁以及添加线程对于队列的变化
  6. 回顾线程的竞争机制-轻量级锁
  7. Request_共享数据(域对象)
  8. Spring Boot整合@CacheEvict注解使用
  9. 异常注意事项_多异常的捕获处理
  10. 格式化输出浮点型变量