赤裸裸的最大流

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; #define maxn 205
#define maxm 205
#define inf (1 << 30) struct Edge
{
int next, v, f;
} edge[maxm * ]; int n, m;
int head[maxn];
int q[maxn];
bool vis[maxn];
int cur[maxn];
int dep[maxn];
int ncount;
int path[maxn]; void addedge(int a, int b, int f)
{
edge[ncount].v = b;
edge[ncount].f = f;
edge[ncount].next = head[a];
head[a] = ncount++;
} void input()
{
ncount = ;
memset(head, -, sizeof(head));
for (int i = ; i < m; i++)
{
int a, b, f;
scanf("%d%d%d", &a, &b, &f);
a--;
b--;
addedge(a, b, f);
addedge(b, a, );
}
} void bfs(int s, int t)
{
memset(vis, , sizeof(vis));
memset(dep, -, sizeof(dep));
int front = , rear = ;
q[rear++] = s;
vis[s] = true;
dep[s] = ;
while (front != rear && !vis[t])
{
int u = q[front++];
for (int i = head[u]; ~i; i = edge[i].next)
{
int v = edge[i].v;
if (!vis[v] && edge[i].f > )
{
q[rear++] = v;
vis[v] = true;
dep[v] = dep[u] + ;
}
}
}
} int dinic(int s, int t)
{
int ret = ;
while (true)
{
bfs(s, t);
if (dep[t] == -)
break;
int path_n = ;
int x = s;
memcpy(cur, head, sizeof(cur));
while (true)
{
if (x == t)
{
int mink = -, delta = inf;
for (int i = ; i < path_n; ++i)
{
if (edge[path[i]].f < delta)
{
delta = edge[path[i]].f;
mink = i;
}
}
for (int i = ; i < path_n; ++i)
{
edge[path[i]].f -= delta;
edge[path[i] ^ ].f += delta;
}
ret += delta;
path_n = mink;
if (path_n)
x = edge[path[path_n - ]].v;
else
x = s;
}
int e;
for (e = cur[x]; ~e; e = edge[e].next)
{
if (edge[e].f == )
continue;
int y = edge[e].v;
if (dep[x] + == dep[y])
break;
}
cur[x] = e;
if (~e)
{
path[path_n++] = e;
x = edge[e].v;
}
else
{
if (path_n == )
break;
dep[x] = -;
--path_n;
if (path_n)
x = edge[path[path_n - ]].v;
else
x = s;
}
}
}
return ret;
} int main()
{
//freopen("t.txt", "r", stdin);
while (~scanf("%d%d", &m, &n))
{
input();
printf("%d\n", dinic(, n - ));
}
return ;
}

poj1273的更多相关文章

  1. poj1273 Drainage Ditches Dinic最大流

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 76000   Accepted: 2953 ...

  2. 网络流模板(模板题:POJ1273)

    模板题:POJ1273 EK: #include <queue> #include <cstdio> #include <cstring> #include < ...

  3. poj1273 Drainage Ditches (最大流板子

    网络流一直没学,来学一波网络流. https://vjudge.net/problem/POJ-1273 题意:给定点数,边数,源点,汇点,每条边容量,求最大流. 解法:EK或dinic. EK:每次 ...

  4. 经典的最大流题POJ1273(网络流裸题)

    http://poj.org/problem?id=1273 Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Subm ...

  5. 最大流/最小割模板(isap) POJ1273

    isap模板核心代码: //d[]为距离标号数组,d[i]表示节点i到汇点的距离 //gap[]为GAP优化数组,gap[i]表示到汇点距离为i的节点个数 int dfs(int k,int flow ...

  6. POJ1273 最大流模板

    之前自己写的,以后当一个模板的基础吧,不管是最大流,最小割,二分图匹配 下面是POJ1273的一个裸题.. 1 #include <iostream> 2 #include <cst ...

  7. 【生活没有希望】poj1273网络流大水题

    你不能把数据规模改大点吗= =我优化都不加都过了 #include <cstdio> #define INF 2147483647 int n,m,ans,x,y,z,M; ],l[],f ...

  8. ACM/ICPC 之 网络流入门-EK算法(参考模板)(POJ1273)

    基于残留网络与FF算法的改进-EK算法,核心是将一条边的单向残留容量的减少看做反向残留流量的增加. //网络流 //EK算法 //Time:16Ms Memory:348K #include<i ...

  9. poj1273 Drainage Ditches

    Drainage Ditches Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 68414   Accepted: 2648 ...

  10. POJ-1273 Drainage Ditches 最大流Dinic

    Drainage Ditches Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65146 Accepted: 25112 De ...

随机推荐

  1. jQuery笔记(二)

    $()下的常用方法 addClass():添加样式 removeClass():删除样式 $('div').addClass('box2 box4'); $('div').removeClass('b ...

  2. 查看django版本的方法

    在cmd输入: python -m django --version django-admin --version

  3. Delphi cxGrid加行号

    procedure SetRowNumber(var ASender: TcxGridTableView; AViewInfo: TcxCustomGridIndicatorItemViewInfo; ...

  4. 免费SSL证书申请 2018年至简教程

    Let’s Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由Mozilla.思科.Akamai.IdenTrust和EFF等组织发起,目的就是向网站自动签发和 ...

  5. 洛谷P2114 [NOI2014]起床困难综合症

    P2114 [NOI2014]起床困难综合症 题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作 ...

  6. Eclipse构建项目时"An internal error occurred during: "Building workspace". Java heap space"

    出现这个错误,eclipse 会卡死,以及自动退出 解决方案 工程根目录 找到项目中.project文件 删除这两处   第一处:  <buildCommand>          < ...

  7. Codeforces 817

    A 你可以按如下方式移动 问能不能从给定的一个坐标走到另一个. [solution] 裸,奇偶性注意 #include<stdio.h> #include<stdlib.h> ...

  8. CF1012C Hills

    显然的DP是,dp[i][j][val] val是1e6的 简化 发现,其实决策很有限,最优解的i-1的val选择有限 题解 这里的一个trick是,f[i][j][0]转移不考虑a[i]和a[i-1 ...

  9. ELK应用之一:ELK平台搭建部署

    一.获取安装包: EKL官网:https://www.elastic.co/products 二.安装Elasticsearch 2.1.解压安装包,在安装目录创建data和logs目录,并在配置文件 ...

  10. UnicodeDecodeError gbk codec can't decode byte in position illegal multibyte sequence

    UnicodeDecodeError:'gbk' codec can't decode byte in position : illegal multibyte sequence 觉得有用的话,欢迎一 ...