POJ 1459 网络流 EK算法

本文深入探讨了网络流算法中的EK算法,通过实例讲解如何利用该算法解决能量传递问题。文章详细介绍了算法实现过程,包括如何构建网络模型,以及如何通过增加源点和汇点来简化问题。

题意:

2 1 1 2 (0,1)20 (1,0)10 (0)15 (1)20
2 1 1 2 表示 共有2个节点,生产能量的点1个,消耗能量的点1个, 传递能量的通道2条;
(0,1)20 (1,0)10 代表(起点,终点)最大传递的能量

(0)15 (产生能量的点)产生的最大能量
(1)20 (消费能量的点)消费的最大能量

初学网络流,我想从基础练起;就先用EK算法写一遍

这道题看似很难,但其实只要加一个源点以及汇点,让所有的产生能量的点指向源点,让所有的消费能量的点指向汇点;
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
#define N 110
#define INF 0x3f3f3f3f
#define Min(a, b) a<b?a:b
int G[N][N], pre[N];

int EK(int s, int e);
bool BFS(int s, int e);

int main()
{
    int point, source, dest, edge;
    while(scanf("%d%d%d%d", &point, &source, &dest, &edge)!=EOF)
    {
        int a, b, flow, in, inflow, out, outflow;
        char ch;
        memset(G, 0, sizeof(G));
        for(int i=0; i<edge; i++)
        {
            //scanf("(%d,%d)%d", &a, &b, &flow);
            cin>>ch>>a>>ch>>b>>ch>>flow;
            G[a+1][b+1]+=flow;
        }

        for(int i=0; i<source; i++)
        {
            //scanf("(%d)%d", &out, &outflow);
            cin>>ch>>out>>ch>>outflow;
            G[0][out+1]+=outflow;
        }

        for(int i=0; i<dest; i++)
        {
            //scanf("(%d)%d", &in, &inflow);
            cin>>ch>>in>>ch>>inflow;
            G[in+1][point+1]+=inflow;
        }

        int ans=EK(0, point+1);
        printf("%d\n", ans);

    }
    return 0;
}

int EK(int s, int e)
{
    int maxflow=0;

    while(BFS(s, e))
    {
        int minflow=INF;

        for(int i=e; i!=s; i=pre[i])
            minflow=Min(minflow, G[pre[i]][i]);

        for(int j=e; j!=s; j=pre[j])
        {
            G[pre[j]][j]-=minflow;
            G[j][pre[j]]+=minflow;
        }
        maxflow+=minflow;
    }

    return maxflow

转载于:https://www.cnblogs.com/wazqWAZQ1/p/4732464.html

【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值