HDU - 4280 Island Transport(最大流)
题目链接:点击查看
题目大意:给出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(最大流)相关推荐
- HDU Problem - 4280 Island Transport(最大流)
题目链接 Problem Description In the vast waters far far away, there are many islands. People are living ...
- hdu4280 Island Transport 网络流最大流 Dinic算法高效模板
Island Transport In the vast waters far far away, there are many islands. People are living on the i ...
- HDU 1385 Minimum Transport Cost
HDU 1385 Minimum Transport Cost 我的WA代码 AC的代码 我的WA代码 我的大概思路就是,如果i->j,如果找到一个中间点k就直接简单的将path[i][j]=k ...
- 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 5383 Yu-Gi-Oh!(费用流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5383 题意:游戏王同调召唤的方法,每只怪兽有等级和攻击力,两种不同类型的怪兽可以在一定限制下召唤出某一 ...
- HDU 3618 Good Plan(费用流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3618 Problem Description FJ has two same houses for r ...
- 【HDU】4411 Arrest 费用流
传送门:[HDU]4411 Arrest 题目分析:题目的意思一开始没看懂= =...题意大致为:派出至多K个警队遵守先灭小的再灭老的的原则将N个城市的帮派全端了(要灭编号大的必须要先灭编号小的).且 ...
- HDU 3549 Flow Problem(最大流模版EK算法)
题目链接 第一道最大流,赤裸裸的模版题,刚好可以熟悉模版用.今天看了一下最大流,就看了一个EK算法,感觉有点和二分图匹配算法有点相似,对于最大流问题有点了解了,不过为什么这么做,也不是 很懂,只是把代 ...
- HDU 4411 Arrest(费用流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4411 题意:有n+1个城市,编号0到n.其中警察局在0号城市,1到n号城市中每个城市都有一个小偷.现在 ...
最新文章
- 读书:个人成长 -- 即兴演讲
- C#连接sqlServer数据库详解
- 《计算机科学概论(第12版)》—第0章0.3节学习大纲
- 蚂蚁金服OceanBase性价比是传统数据库的十倍
- OpenCV--模板匹配与滑动窗口(单匹配或多匹配)
- 近期 AI 领域,招聘招生信息汇总
- STC学习:导航按键与数字按键综合控制数码管
- lamp mysql登录_LAMP 3.2 mysql登陆
- Matlab Robitic Toolbox学习笔记Day1
- Autocad ET扩展工具汉化
- 超分算法在 WebRTC 高清视频传输弱网优化中的应用
- HDU 4939 DP
- window引导配置bcdedit
- 法拉科机器人接头_图解FANUC机器人I/O信号板接口定义与拆装
- jekyll php,使用Jekyll在Github上搭建个人博客(文章分类索引)
- 【零基础Eviews实例】02自相关(序列相关)的检验与修正
- 商城项目解析(前端页面知识,用户如何访问服务器,hosts的修改,nginx)
- 企业如何利用生产制造业ERP管理系统做好采购管理?
- 如何在JS中计算扑克牌中的顺子、对子、半顺、豹子、杂六
- C++中有哪些类型转换方式