UVa 10594 Data Flow(无向图的费用流)

题目链接:UVa 10594 Data Flow

无向图的费用流。

无向图,则必须使用邻接表,这样才能解决反向边的问题。

加一个点0,表示为起点,设置cap[0][1]=D(题目给的流量D),cost[0][1]=0。显然到终点的最大流量不可能超过D,那么小于D的话表示不可解,等于D表示有解。

#include <iostream>
#include <cstring>
#include <stdio.h>
#include <queue>

using namespace std;

const int MAX_N = 100 + 10;
const int MAX_E = 5000;
const int MAX_M = 5000 << 2;
const long long first = 1;
const long long LLINF = (first << 60);
const int INF = (1 << 30);
struct Edge1
{
    int u, v, next;
    long long cost;
    int flow, cap;

};
struct Edge2
{
    int u, v;
    long long cost;
};
Edge1 edge1[MAX_M];
Edge2 edge2[MAX_E];
int head[MAX_N];
long long dis[MAX_N];
int p[MAX_N];
bool vis[MAX_N];
int n, m, cnt, d;
long long f, c, cap;
void add(int u, int v, long long cost, int cap)
{
    edge1[cnt].u = u;
    edge1[cnt].v = v;
    edge1[cnt].cap = cap;
    edge1[cnt].cost = cost;
    edge1[cnt].flow = 0;
    edge1[cnt].next = head[u];
    head[u] = cnt;
    cnt++;
    edge1[cnt].u = v;
    edge1[cnt].v = u;
    edge1[cnt].cap = 0;
    edge1[cnt].cost = -cost;
    edge1[cnt].flow = 0;
    edge1[cnt].next = head[v];
    head[v] = cnt;
    cnt++;

}
void EK()
{
    queue <int> q;
    c = f = 0;
    while(true)
    {
        for(int i = 0;i <= n; i++)
            dis[i] = (i == 0 ? 0 : LLINF);
        memset(vis, false, sizeof(vis));
        memset(p, -1, sizeof(p));
        q.push(0);
        while(!q.empty())
        {
            int u = q.front();
            q.pop();
            vis[u] = false;
            for(int k = head[u]; k != -1; k = edge1[k].next)
            {
                int v = edge1[k].v;
                if(edge1[k].cap > edge1[k].flow && dis[v] > dis[u] + edge1[k].cost)
                {
                    dis[v] = dis[u] + edge1[k].cost;
                    p[v] = k;
                    if(!vis[v])
                    {
                        vis[v] = true;
                        q.push(v);
                    }
                }
            }
        }
        if(dis[n] == LLINF)
            break;
        int a = INF;
        for(int u = p[n]; u != -1; u = p[edge1[u].u])//这里的u是指第u条边,不再是邻接矩阵里面的顶点
            a = min(a, edge1[u].cap - edge1[u].flow);
        for(int u = p[n]; u != -1; u = p[edge1[u].u])//增广,这里的u是指第u条边,不再是邻接矩阵里面的顶点
        {
            edge1[u].flow += a;
            edge1[u^1].flow -= a;//注意看这里的亦或符号 比如u为2,亦或后就是3了,恰好第二条边的反向边就是第三条边
        }
        c += dis[n] * a;//注意需要乘以距离
        f += a;
    }
}
int main()
{
    while(scanf("%d%d", &n, &m) != EOF)
    {
        cnt = 0;
        memset(head, -1, sizeof(head));
        for(int i = 0; i < m; i++)
            scanf("%d%d%lld", &edge2[i].u, &edge2[i].v, &edge2[i].cost);
        scanf("%d%d", &d, &cap);
        add(0, 1, 0, d);
        for(int i = 0; i < m; i++)
        {
            add(edge2[i].u, edge2[i].v, edge2[i].cost, cap);
            add(edge2[i].v, edge2[i].u, edge2[i].cost, cap);
        }
        EK();
        if(f == d)
            printf("%lld\n", c);
        else
            printf("Impossible.\n");
    }
    return 0;
}


Delft3D从入门到实践:安装、编译与首次模拟指南 本文为Delft3D初学者提供了一份详尽的从零开始指南。内容涵盖软件获取、许可证申请、图形界面安装、核心计算内核的编译环境搭建与编译步骤,以及最终整合运行首个水动力模拟的全流程。重点解决了Windows系统下Delft3D安装与编译的常见问题,帮助用户快速上手这一开源水动力与泥沙输运模拟工具。 阅读详情

相关推荐

CMOS锁相环核心:四种鉴频鉴相器(PFD)结构深度剖析与选型指南

本文深入剖析了CMOS锁相环中四种鉴频鉴相器(PFD)的结构与性能,包括传统RS触发器型、非时钟型、预充电型和边沿触发型PFD。通过详细的电路分析、实测数据和工程案例,提供了PFD选型的实用指南,帮助工程师根据速度、功耗和精度需求选择最优方案,提升锁相环设计效率。

weixin_42530458的博客 588

uva 10594(最大流最小费)

题意: 题解:

俯瞰风景 975

软考软件评测师备考避坑指南:过来人告诉你这5个章节最容易丢分(附2024最新考纲解析)

本文为软考软件评测师考生提供备考避坑指南,深度解析5个高频失分章节,包括标准化与信息化基础、中间件技术、软件测试模型、白盒测试覆盖准则和性能测试指标。文章结合2024最新考纲,分享实战技巧和记忆口诀,帮助考生精准打击失分重灾区,提升备考效率。

weixin_29223603的博客 467

无向图的最小费用最大流问题 UVa 10594 - Data Flow

无向图的最小费用最大流问题 预备知识:最大流问题,增广路算法,有向图的最小费用最大流问题。 问题说明:把物品从结点s(称为源点)运送至结点t(称为汇点),连接结点u和结点v的无向边上有两个二元组(x,y)和(x’,y’),x表示边u->v的最大运送能力,y表示边u->v运送单位物品的花费,x’表示边v->u的最大运送能力,y’表示边v->u运送单位物品的花费(其中,x可以等于x’,y可以等于y’)。

zhihua_oba的博客 2589

ESP32-C5硬件设计全链路指南:ADC/SDIO/USB/RF PCB实战

模数转换器(ADC)和高速外设接口是嵌入式系统硬件设计的核心基础。理解ADC通道映射、输入阻抗特性与抗干扰布线,是保障传感器采样精度的前提;掌握SDIO、USB差分信号的阻抗控制、端接策略与电源去耦方法,则直接决定通信可靠性与EMC性能。在Wi-Fi 6/Bluetooth 5.3双模SoC如ESP32-C5中,ADC复用约束、USB与SDIO管脚冲突、RF匹配网络调校、四层板叠层规划等工程细节,共同构成高成功率PCB落地的关键技术栈。本文聚焦ESP32-C5平台,系统梳理从模拟前端到射频输出的硬件设计规范

weixin_35756130的博客 345

【Ensp】FTP服务器设置和FTP解析

大部分的多媒体多媒体应用协议,如SIP,FTP,NetMeeting协议等,使用约定的固定端口来初始化一个控制连接,再动态地选择端口用于数据传输,并且这些端口选择是不可预测的。在防火墙设置时,可以通过ASPF(应用层报文过滤)中的Server Map表来满足多通道协议的正常工作,它正常检测应用层报文信息,并动态地根据报文内容创建和删除临时的Server Map表项,以允许其它非约定端口通过防火墙。(5)我们可以在路由器或能访问ftp服务器的设备上,通过cli命令行的方式来访问ftp服务器。

进击的小小白 1863

uva10594(最小费用最大流)

题目的意思就 #include #include #include #define ll long long using namespace std; const ll INF = 1000000000000005; const int N = 105; const int M = 5005; const int K = 20100; ll cap[K]; ll flow[K

潜水的程序猿 535

RPCA模型及GoDec算法

一、基础知识 在线性代数中,秩的物理意义是矩阵中最大的不相关的向量个数,因此秩可以用来度量相关性;而在图像处理中,秩就可以理解为图像中所包含的信息的丰富程度。图片中比较突兀的成分,会增加图像矩阵的秩,一幅清晰的自然图像其数据矩阵往往是低秩或者近似低秩的,这是因为其中的图像信息有很大的相关性,但如果图像中引入噪声,那么存在随机幅值任意大但是分布稀疏的误差破坏了原有数据的低秩性。 低秩矩阵:如果AAA是一个m×nm×nm×n的矩阵,rank(A)rank(A)rank(A)是矩阵AAA的秩,如果rank(A)

小席的学习日志 7688

UVA10594 Data Flow 无向图的最小费用流

https://www.luogu.com.cn/problem/UVA10594 题目大意:题面太长就不放了,其实就是给定了一张无向图,每条边的流量是一个定值,同时有一个权值,问总共DDD个数据能否从顶点111传输到顶点nnn,若能则输出花费的最小时间,否则输出Impossible.Impossible.Impossible. 思路:很明显的费用流,建图也很简单,把顶点000当作源点,给000到...

xiji333的博客 373

lammps教程:官方自带eam_database程序拟合EAM势方法介绍

使用lammps模拟金属体系,最常用的势函数为eam、meam势。 对于大多数金属或者合金来说,可以从网上下载相对应的eam或meam势力场文件。 而对于一些新的合金材料,可能就找不到相对应的力场文件。 解决的方法有两种,一是采用混合势(pair_style hybrid),第二种方法是自己拟合势函数文件。 混合势的写法在前面文章中已经介绍过,本文介绍一种拟合EAM势的方法。 该方法是运行Xiaowang Zhou编写的一个拟合程序,该程序可自动生成所需要的合金势。 这个程序能够拟合的合金元素有: Cu,

lammps_jiayou的博客 4617

前端使用二开Thingsboard一、二、三事(四)-部件库

以项目实战为基础,逐步介绍前端在thingsboard系统二次开发中的一些注意事项以及一些thingsboard一些页面功能讲解,为前端人员开发使用thingsboard提供一种可靠思路,打造一个完美的物联网系统。

weixin_43163457的博客 741

UVA - 10594 Data Flow (最小费用最大流)

注意是无向图,必然要用邻接表,将无向边分成两个方向的有向边。1为源点,N为汇点,求流量为D的最小费用,因为费用为D,则用0到1的容量为D,表示初始的费用。在无向图G中把D单位的数据从1号点传到N号点,每条边允许传输数据的最大容量均为K,给出每条边传输单位数据的费用,求最小传输D单位数据的费用。总结:照着模板敲代码,我都能敲错,看来我真的是太粗心了。然后套模板,求出0~n的最小费用。

lengyue815的博客 215

【如何学习CAN总线测试】——Python+Robot Framework框架实现UDS诊断自动化

由于项目需要进行UDS诊断测试,所以对这方面进行了研究学习,网上很少能查询到相关资料,故记录一下UDS自动化测试开发过程,由于保密原则,案例都是Demo,希望能帮到感兴趣的朋友。

测试领域技术分享 7470

uva 10594 - Data Flow(费用流)

题目链接:uva 10594 - Data Flow 题目大意:给出一张图,然后给出K和D,D表示每条路的容量,然后由点1到点n运送数据,流量为K时的最小费用。 解题思路:和uva 10806 - Dijkstra, Dijkstra.做法一个样.....表示说不解释,就在起点0和1之间加条容量为K的路就好。 #include #include #incl

不慌不忙、不急不躁 2151

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

UVA 10594 Data Flow

无向图费用流 还有一段话摘自别人博客 这道题是无向图的最小费用最大流问题,看清楚是无向图的。这么说无向图和有向图的费用流问题有什么区别呢?主要是反向边的问题。首先我们说一下最大流问题中的反向边,我们需要将其cap[u][v]=0表示容量为0,而在费用流问题中添加了费用,所以肯定不能像之前那么简单处理了,那怎么办呢?在有向图中,没有存在的反向边我们用cap[u][v]=0表示容量为0,...

deko2014的博客 143

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

UVa 10594 - Data Flow(无向图的最小费用最大流问题)

题目链接:UVa 10594 - Data Flow 这道题是无向图的最小费用最大流问题,看清楚是无向图的。这么说无向图和有向图的费用流问题有什么区别呢?主要是反向边的问题。首先我们说一下最大流问题中的反向边,我们需要将其cap[u][v]=0表示容量为0,而在费用流问题中添加了费用,所以肯定不能像之前那么简单处理了,那怎么办呢?在有向图中,没有存在的反向边我们用cap[u][v]=0表示容量为

fobdddf的专栏 8625

UVa10594 Data Flow(最小费用 最大流)

这道题是一道最小费用最大流问题,从这道题里面,我更加理解什么是最小费用最大流了,主要就是在找最短路径的同时,还要顾及到最大流量及残余网络,其实就是在残余网络中找最短路径 有一下要注意的: 第一,边的两个方向,费用互为相反数 第二,无向图的最小费用最大流,要用邻接表表示,因为点和点之间的两个方向的边要分别表示其反方向,也就是这两边是独立的,不能用互为反边的思想,否则会出现环路,而且会无限循环,

AClion的专栏 1083

uva 10594 Data Flow(最小费用流)

uva 10594 Data Flow (最小费用流) 题目大意: 运输数据从1到n,每条路的花费告诉你,以及路线的流量限定告诉你,问你最小花费 解题思路: 是一题裸的最小费用流,只不过是双向的,应该拆边。 解题代码:见文章

炒饭君的博客 1857

UVA 10594 Data Flow (最小费用流)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=116&page=show_problem&problem=1535  Problem F Data Flow Time Limit 5 Seconds   I

fcbruce 1134

UVA 10594 - Data Flow(费用流)

Problem F Data Flow Time Limit 5 Seconds   In the latest Lab of IIUC, it requires to send huge amount of data from the local server to the terminal server. The lab setup

Remilia's 1259

UVa10594 - Data Flow

Problem F Data Flow Time Limit 5 Seconds   In the latest Lab of IIUC, it requires to send huge amount of data from the local server to the terminal server. The lab setup i

mowayao的专栏 767

uva 10594 Data Flow (最小费最大流+题目给的数据有错)

uva 10594 Data Flow题目大意:给出一张图,以及D, K,D代表所要传送的数据量,K代表每条边可以传送的数据量(就是容量),问在可以传送所有数据的前提下,最小耗费时间。解题思路:建一个超级源点连向源点1,容量为D,然后求该图的最小费最大流。最后将求出的最大流与D比较,比D小输出inpossible,否则输出最小费。#include <cstdio> #include <cstring

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 866

uva10594 - Data Flow 无向图的最小费用

Problem F Data Flow Time Limit 5 Seconds   In the latest Lab of IIUC, it requires to send huge amount of data from the local server to the terminal server. The lab setup

615

Data Flow - UVa 10594 费用流

In the latest Lab of IIUC, it requires to send huge amount of data from the local server to the terminal server. The lab setup is not yet ready. It requires to write a router program for the best path

提比的强行AC 636

uva 10594 Data Flow

最小费用最大流:无向图(所以必须用邻接表)+当流量为D时的最小费用(即限制流量在D,求最大流) 题意:就是给你一个无向图,给出所有的无向边和它们的单位费用(题中说了不会有平行边),然后给出D,K,K是指每条无向边的容量固定为K,然后问当流量为D时最小费用是多少,如果流量无法得到D这个数值,那么就输出Impossible. 解决这个问题的方法就是限制流量,加一个新的源点(或者汇点,道理一样),增...

weixin_33816611的博客 115
上一篇: POJ 2631 Roads in the North(树形dp)
下一篇: HDU 3555 Bomb(数位dp)
小爷永远不死
博客等级 码龄15年 58粉丝 363原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值