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之间不连通. 大致思路: 最基础的拆点最大 ...
随机推荐
- LAMP+discuz网站搭建过程
LAMP+discuz网站的搭建 一. LAMP环境搭建 0x01下载配置虚拟机 网上下载centOS7 64的镜像,然后在vmware里面配置好,我配置的是linux终端桌面,运行快,占内存小. 0 ...
- 修改或忘记MySQL密码
一.创建/修改MySQL密码 刚装好只能允许一个本地账户root@localhost访问 刚开始默认无密码 新增密码root,输入此命令后回车再回车即可 修改密码,输入此命令后回车,输入原密码后回车即 ...
- jQuery使用ajax跨域请求获取数据
jQuery使用ajax跨域请求获取数据 跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的 ...
- 其他 - PotPlayer - 基础快捷键总结
概述 尝试使用 potplayer 的快捷键 背景 最近需要反复看录像 回看 慢速 其他各种 没错, 我的需求就是 游戏复盘... 环境 os win10.1903 player potplayer. ...
- Linux - mysql 异常: ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists
问题描述 ERROR! MySQL is not running, but lock file (/var/lock/subsys/mysql) exists 解决方案 删除:/var/lock/su ...
- sql语言分类及区别、显示和隐示提交的指令
SQL的发展是从1974年开始的,其发展过程如下: 1974年-----由Boyce和Chamberlin提出,当时称SEQUEL. 1976年-----IBM公司的Sanjase研究所在研制RDBM ...
- django 版本 对应pyhton版本
对应关系
- url 加参数
url = 访问地址 + ? key1=value1 & key2 = value2 304(未修改)自从上次请求后,请求的网页未修改过.服务器返回此响应时,不会返回网页内容. 加参数,骗过服 ...
- java继承与多态课后作业
1.动手实验 源码 class Grandparent { public Grandparent() { System.out.println("GrandPar ...
- ASP.NET Razor简介
Razor 不是一种编程语言.它是服务器端的标记语言. 什么是 Razor? Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 C#)嵌入到网页中. 基于服务器的代 ...