初涉网络流。改日再写一些概念性的介绍。

ek算法可作为模板使用。

#include <iostream>
#include <queue>

using namespace std;

#define MAXN 105
#define inf 1 << 20

bool used[MAXN];
int pre[MAXN];
int map[MAXN][MAXN];
int vertices, power_stations, consumers, edges;

int EK()
{
    int i, res = 0, now, min;
    queue<int>q;
    while (1)
    {
        memset(pre, -1, sizeof(pre));
        memset(used, 0, sizeof(used));
        while (!q.empty())
            q.pop();
        q.push(0);
        used[0] = true;
        while (!q.empty())
        {
            now = q.front();
            q.pop();
            if (now == vertices + 1)
                break;
            for (i = 0; i <= vertices + 1; i++)
            {
                if (!used[i] && map[now][i]>0)
                {
                    pre[i] = now;
                    used[i] = true;
                    q.push(i);
                }
            }
        }
        if (!used[vertices + 1])
            break;
        min = inf;
        for (i = vertices + 1; i != 0; i = pre[i])
        if (map[pre[i]][i]<min)
            min = map[pre[i]][i];
        res = res + min;
        for (i = vertices + 1; i != 0; i = pre[i])
        {
            map[pre[i]][i] = map[pre[i]][i] - min;
            map[i][pre[i]] = map[i][pre[i]] + min;
        }
    }
    return res;
}

int main()
{

while (cin >> vertices >> power_stations >> consumers >> edges)
    {
        memset(map, 0, sizeof(map));
        for (int i = 0; i < edges; i++)
        {
            char waste;
            int from, to, capacity;
            cin >> waste >> from >> waste >> to >> waste >> capacity;
            map[from+1][to+1] = capacity;
        }

int super_s, super_t;
        super_s = 0, super_t = vertices + 1;
        //vertices += 2;

for (int i = 0; i < power_stations; i++)
        {
            char waste;
            int to, capacity;
            cin >> waste >> to >> waste >> capacity;
            map[super_s][to+1] = capacity;
        }

for (int i = 0; i < consumers; i++)
        {
            char waste;
            int from, capacity;
            cin >> waste >> from >> waste >> capacity;
            map[from+1][super_t] = capacity;
        }
        cout << EK() << endl;
    }
    return 0;
}

poj1459的更多相关文章

  1. POJ1459 最大网络流

    问题: POJ1459 涉及内容:最大网络流 分析: 本题问题看似非常复杂,实际上可以转化为单源点单汇点的最大网络流问题. 1)因为电量只在发电站产生,故增加源点S,构建从S到每个发电站的有向边,边的 ...

  2. POJ1459 Power Network 网络流 最大流

    原文链接http://www.cnblogs.com/zhouzhendong/p/8326021.html 题目传送门 - POJ1459 题意概括 多组数据. 对于每一组数据,首先一个数n,表示有 ...

  3. POJ-1459 Power Network(最大流)

    https://vjudge.net/problem/POJ-1459 题解转载自:優YoU http://user.qzone.qq.com/289065406/blog/1299339754 解题 ...

  4. POJ-1459 Power Network---最大流

    题目链接: https://cn.vjudge.net/problem/POJ-1459 题目大意: 简单的说下题意(按输入输出来讲,前面的描述一堆的rubbish,还用来误导人),给你n个点,其中有 ...

  5. POJ1459 Power Network —— 最大流

    题目链接:https://vjudge.net/problem/POJ-1459 Power Network Time Limit: 2000MS   Memory Limit: 32768K Tot ...

  6. POJ-1459(最大流+EK算法)

    Power Network POJ-1459 这题值得思索的就是特殊的输入,如何输入一连串字符.这里采用的方法是根据输入已知的输入格式,事先预定好要接受的数据类型. 这里套用的板子也是最大流的模板,但 ...

  7. ACM/ICPC 之 电力网络-EK算法(POJ1459)

    按照电站发电(从源点到电站),消费者消费(从消费者到汇点)的想法构建网络,以下是EK解法 //网络流EK算法 //Time:922Ms memory:224K #include<iostream ...

  8. poj1459 Power Network (多源多汇最大流)

    Description A power network consists of nodes (power stations, consumers and dispatchers) connected ...

  9. POJ1459 Power Network(网络最大流)

                                         Power Network Time Limit: 2000MS   Memory Limit: 32768K Total S ...

随机推荐

  1. [swustoj 373] Antiprime数

    Antiprime数(0373) 问题描述 如果一个自然数n(n>=1),满足所有小于n的自然数(>=1)的约数个数都小于n的约数个数,则n是一个Antiprime数.譬如:1, 2, 4 ...

  2. poj 1742 Coins

    // v给出N种硬币和个数,问可以取到1->M中的多少个值.// 背包 完全背包 或多 重背包(二进制优化)都可以做// #include <iostream> #include & ...

  3. ORACLE之手动注册监听listener。alter system set local_listener="XXX"

    记录下刚刚做的一个为一个数据库(t02)配置多个监听(listener)的实验,过程有点小曲折. (1)新增两个测试的监听,listener.ora的配置内容(可纯手动编辑该文件或使用netca)如下 ...

  4. PHP最佳实践(译)

    原文: PHP Best Practices-A short, practical guide for common and confusing PHP tasks 译者:youngsterxyf 最 ...

  5. css的伪元素

    这里想将的是两个伪元素,一个是:first-line——用来向文本的首行添加特殊样式,并且不论该行出现多少单词:只能与块状元素关联. 如下属性可以应用于:first-line伪元素 font属性 co ...

  6. HDU 5744 Keep On Movin

    Keep On Movin Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  7. MyBatis一对多双向关联——MyBatis学习笔记之七

    处理has-one关系需要用到association元素,而处理has many关系则需要用到collection元素.例如本例中,假设一 名教师可同时指导多名学生,下面就来介绍如何使用collect ...

  8. SDUT 3568 Rock Paper Scissors 状压统计

    就是改成把一个字符串改成三进制状压,然后分成前5位,后5位统计, 然后直接统计 f[i][j][k]代表,后5局状压为k的,前5局比和j状态比输了5局的有多少个人 复杂度是O(T*30000*25*m ...

  9. bjfu1099 度度熊大战僵尸

    这也是2011年百度之星的一道题. 这题我就是乱搞搞过的,打代码之前自己心里也没底,不知道能不能过的. 我的做法很简单,就是按时间顺序依次构造能杀死的僵尸血量,找到第k小的.构造的方法也很暴力:对t时 ...

  10. [Irving] SQL 2005/SQL 2008 备份数据库并自动删除N天前备份的脚本

    以下为SQL脚本,本人以执行计划来调用,所以改成了执行命令,大家可根据自己需要改为存储过程使用 )='E:\MsBackUp\SqlAutoBackup\' --备份路径; --备份类型为全备,1为差 ...