計蒜課/排澇(Edmond-Karp)
題目鏈接: https://nanti.jisuanke.com/t/36
題意:中文題目誒~
思路: 最大流模板題....
關於最大流算法blog:
http://www.cnblogs.com/zsboy/archive/2013/01/27/2878810.html
http://blog.csdn.net/y990041769/article/details/21026445
http://www.cnblogs.com/luweiseu/archive/2012/07/14/2591573.html
代碼:
#include <iostream>
#include <stdio.h>
#include <queue>
#include <string.h>
using namespace std; const int MAXN=2e2+;
const int inf=0x7fffffff;
int capacity[MAXN][MAXN];//記錄殘留網絡流量
int flow[MAXN]; //標記從源點到當前節點實際還剩多少流量可用
int pre[MAXN]; //pre[i]爲i的父親節點
int n, m; int bfs(int src, int des){
queue<int> q;
while(!q.empty()){
q.pop();
}
for(int i=; i<=m; i++){
pre[i]=-;
}
pre[src]=;
flow[src]=inf;
q.push(src);
while(!q.empty()){
int indx=q.front();
q.pop();
if(indx==des) break;//找到了增廣徑
for(int i=; i<=m; i++){
if(i!=src&&capacity[indx][i]>&&pre[i]==-){
pre[i]=indx;
flow[i]=min(capacity[indx][i], flow[indx]);
q.push(i);
}
}
}
if(pre[des]==-) return -;
return flow[des];
} int edmond_karp(int src, int des){
int increasement=;
int sumflow=;
while((increasement=bfs(src, des))!=-){
int k=des; //利用前區尋找路徑
while(k!=src){
int last=pre[k];
capacity[last][k]-=increasement;//改變正向邊容量
capacity[k][last]+=increasement;//改變反向邊容量
k=last;
}
sumflow+=increasement;
}
return sumflow;
} int main(void){
int start, end, ci;
while(~scanf("%d%d", &n, &m)){
memset(capacity, , sizeof(capacity));
memset(flow, , sizeof(flow));
for(int i=; i<n; i++){
scanf("%d%d%d", &start, &end, &ci);
if(start==end) continue;
capacity[start][end]+=ci;//可能有重邊
}
printf("%d\n", edmond_karp(, m));
}
return ;
}
計蒜課/排澇(Edmond-Karp)的更多相关文章
- 計蒜客/數正方形(dp)
題目鏈接:https://nanti.jisuanke.com/t/44 題意:中文題誒~ 思路: 用dp[i][j]存儲以(i, j)爲左上定點的最大正方形變長,從右下角網左上角一次計算所有頂點: ...
- 計蒜客/小教官(xjb)
題目鏈接:https://nanti.jisuanke.com/t/366 題意:中文題誒~ 思路: 先通過給出的條件構造一個符合題意的數組(可以是任意一個符合條件的數組,菜雞不會證明: 然後構造的數 ...
- 网络最大流的(Edmond Karp)算法
容量网络:在有向图D=(V,A),指定一个点为发点,记作 s,指定另一个点为收点,记作 t,其余点叫作中间点.对于A的每条弧(Vi,Ai),都对应一个权数 C ≥0,称为弧(Vi , Ai)的容量,将 ...
- Linux Kernel 排程機制介紹
http://loda.hala01.com/2011/12/linux-kernel-%E6%8E%92%E7%A8%8B%E6%A9%9F%E5%88%B6%E4%BB%8B%E7%B4%B9/ ...
- 最大流(EK)
最大流 — Edmond Karp算法 Edmond Karp算法的大概思想: 反复寻找源点s到汇点t之间的增广路径,若有,找出增广路径上每一段[容量-流量]的最小值delta,若无,则结束. 在寻找 ...
- 【最大流之ek算法】HDU1532 求最大流
本来是继续加强最短路的训练,但是遇到了一个最短路 + 最大流的问题,最大流什么鬼,昨天+今天学习了一下,应该对ek算法有所了解,凭借学习后的印象,自己完成并ac了这个最大流的模板题 题目大意:都是图论 ...
- 透彻网络流-wfx-最大流
前提: 我们想象一下自来水厂到你家的水管网是一个复杂的有向图,每一节水管都有一个最大承载流量.自来水厂不放水,你家就断水了.但是就算自来水厂拼命的往管网里面注水,你家收到的水流量也是上限(毕竟每根水管 ...
- 网络流小记(EK&dinic&当前弧优化&费用流)
欢 迎 来 到 网 络 瘤 的 世 界 什么是网络流? 现在我们有一座水库,周围有n个村庄,每个村庄都需要水,所以会修水管(每个水管都有一定的容量,流过的水量不能超过容量).最终水一定会流向唯一一个废 ...
- IC芯片設計
IC從生產目的上可以分成為通用IC(如CPU,DRAM,接口芯片等)和ASIC(ApplicationSpecificIntegreted Circuit)兩種,ASIC是因應專門用途而生產的IC. ...
随机推荐
- quick-cocos2d-x教程3:程序框架内文件夹分析之docs文件夹
如今我们分析框架中的docs文件夹.看看这个文档文件夹中,究竟放了那些对我们实用的东西. docs文件夹分析 UPGRADE_TO_2_2_3.md 就是讲升级的变化.详细说明:quick-cocos ...
- Nginx+ffmpeg的HLS开源server搭建配置及开发具体解释
本文概述: 至眼下为止.HLS 是移动平台上很重要并十分流行的流媒体传输协议.做移动平台的流媒体开发,不知道它不掌握它 .真是一大遗憾.而HLS的平台搭建有一定的难度,本文针对对该方向有一定了解的朋友 ...
- Spring mvc接受集合类型参数的方法
public String xxxxx(String xxxx, String xxxxx, @RequestParam("parameterList[]") List<St ...
- AndroidContactsTest.java
以下代码使用ContactManager.apk进行测试 package com.saucelabs.appium; import io.appium.java_client.AppiumDriver ...
- const与define应用上该怎么取舍
const与define应用上该怎么取舍 #define WYB 100; const float WYB = 100; define是在预编译的时候展开替换的,const是编译运行阶段使用 defi ...
- 安装截图工具 Shutter【转】
本文转载自:http://blog.csdn.net/hanshileiai/article/details/46843713 一.安装截图工具 Shutter 1. 添加安装包软件源 sudo ad ...
- hdu1052 田忌赛马 —— 贪心
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1052 错误代码: #include<stdio.h>//田忌赛马,错误版 #include ...
- Java版本更新历史(ing)
历史版本特性 JDK Version 1.0 开发代号为Oak(橡树),于1996-01-23发行. JDK Version 1.1 于1997-02-19发行. 引入的新特性包括: 引入JDBC(J ...
- Session移除
Session.Clear()就是把Session对象中的所有项目都删除了,Session对象里面啥都没有.但是Session对象还保留. Session.Abandon()就是把当前Session对 ...
- BZOJ_3123_[Sdoi2013]森林_主席树+启发式合并
BZOJ_3123_[Sdoi2013]森林_主席树+启发式合并 Description Input 第一行包含一个正整数testcase,表示当前测试数据的测试点编号.保证1≤testcase≤20 ...