BZOJ 2324: [ZJOI2011]营救皮卡丘(带上下限的最小费用最大流)

这道题么= =还是有些恶心的,第一次写带上下界的网络流,整个人都萌萌哒~~~

首先先预处理得最短路后

直接用费用流做就行了。

第一次写,还是挺好写的= =

CODE:

#include<cstdio>

#include<iostream>

#include<algorithm>

#include<cstring>

#include<queue>

using namespace std;

#define maxn 310

#define maxm 100000

struct edges{

    int to,next,cap,dist;

}edge[maxm];

int next[maxn],l;

void addedge(int x,int y,int z,int d){

    l++;

    edge[l*2]=(edges){y,next[x],z,d};next[x]=l*2;

    edge[l*2+1]=(edges){x,next[y],0,-d};next[y]=l*2+1;

}

int inf;

int dist[maxn],w[maxn],s,t,cnt;

bool b[maxn];

queue<int> q;

bool spfa() {

    for (int i=1;i<=cnt;i++) dist[i]=inf;

    dist[s]=0;

    q.push(s);

    while (!q.empty()) {

        int u=q.front();q.pop();

        b[u]=0;

        for (int i=next[u];i;i=edge[i].next)

            if (edge[i].cap&&edge[i].dist+dist[u]<dist[edge[i].to]) {

                dist[edge[i].to]=dist[u]+edge[i].dist;

                w[edge[i].to]=i;

                if (!b[edge[i].to]) {

                    b[edge[i].to]=1;

                    q.push(edge[i].to);

                }

            }

    }

    return dist[t]!=inf;

}

int ans;

int mcmf(int ss,int tt){

    s=ss,t=tt;

    while (spfa()) {

        int x=t,flow=inf;

        while (x!=s) {

            flow=min(flow,edge[w[x]].cap);

            x=edge[w[x]^1].to;

        }

        ans+=flow*dist[t];

        x=t;

        while (x!=s) {

            edge[w[x]].cap-=flow;

            edge[w[x]^1].cap+=flow;

            x=edge[w[x]^1].to;

        }

    }

}

int dis[maxn][maxn],f[maxn][maxn],id[maxn][2];

int main(){

    int n,m,k;

    scanf("%d%d%d",&n,&m,&k);

    memset(f,10,sizeof(f));

    inf=f[0][0];

    for (int i=1;i<=m;i++) {

        int x,y,z;

        scanf("%d%d%d",&x,&y,&z);

        f[x][y]=f[y][x]=min(f[x][y],z);

    }

    for (int i=0;i<=n;i++) f[i][i]=0;

    for (int k=0;k<=n;k++) {

        for (int i=0;i<=n;i++)

                for (int j=0;j<=n;j++)

                    f[i][j]=min(f[i][j],f[i][k]+f[k][j]);

        for (int i=0;i<=n;i++) dis[i][k]=f[i][k];

    }

    for (int i=0;i<=n;i++) id[i][0]=++cnt;

    for (int i=0;i<=n;i++) id[i][1]=++cnt;

    int s=++cnt,t=++cnt;

    addedge(id[0][0],id[0][1],k,0);

    for (int i=1;i<=n;i++) {

        addedge(id[0][1],id[i][0],inf,dis[0][i]);

        addedge(id[i][1],id[n][1],inf,0);

        addedge(id[i][0],id[i][1],inf,0);

        addedge(s,id[i][1],1,0);

        addedge(id[i][0],t,1,0);

    }

    for (int i=0;i<n;i++)

        for (int j=i+1;j<=n;j++)

           if (dis[i][j]!=inf) addedge(id[i][1],id[j][0],inf,dis[i][j]);

    addedge(id[n][1],id[0][0],inf,0);

    mcmf(s,t);

    next[s]=next[t]=0;

    next[id[n][1]]=edge[next[id[n][1]]].next;

    next[id[0][0]]=edge[next[id[0][0]]].next;

    mcmf(id[0][0],id[n][1]);

    printf("%d\n",ans);

    return 0;

}


转载于:https://www.cnblogs.com/New-Godess/p/4348905.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务基本环境的搭建

order-paymentspring-cloud 环境的搭建订单模块 服务消费者支付模块 服务提供者payment, CommonOrder公共抽取这里使用maven聚合的方式构建微服务。 只给出pom demo 地址 spring-cloud 环境的搭建 父依赖 <?xml version"1.0" encoding"UTF-8"?>…

EF三层

一. 主要内容 1. 数据层和业务层父类。&#xff08;泛型约束&#xff09; 2. 模板方法模式&#xff08;业务层子类方法通过业务层父类调用数据层子类的方法&#xff09;。 二. 源代码 http://files.cnblogs.com/HuoAA/EF%E4%B8%89%E5%B1%82.rar转载于:https://www.cnblogs.com/…

服务注册中心 eureka 搭建

服务注册中心&#xff0c;netfix公司的&#xff0c;出道即巅峰&#xff0c;可惜没人维护了。 1.x 可用&#xff0c;2.x 使用后果自负。本文讲eureka服务中心的搭建&#xff0c;分为单机版本和eureka集群版本。以及服务消费者&#xff0c;服务提供者如何入驻注册中心。 eurekaeu…

虚拟机 不能联网

当在vmware 中系统以 Nat 方式连接网络时&#xff0c;出现 &#xff1a; ping baidu.com ping unknown host baidu.com 检查一下以下几个地方,确保NAT上网的几个服务已经启动.具体操作如下: 开始---设置--控制面板---管理工具---服务 VMware DHCP Service VMware NA…

jwt, json web token

jwt1. JWT什么是JWTJWT能做什么为什么用JWTJWT结构JWT问题和趋势2. jwt加解密工具&#xff0c;使用pom工具类测试1. JWT 什么是JWT 官方定义 json web token是一个开放标准&#xff08;rfc7519&#xff09;&#xff0c;它定义了一种紧凑的&#xff0c;自包含的方式&#xff0c;…

kali 更新源

个人收集的kali 更新源: 修改更新源&#xff1a;vim /etc/apt/sources.list更新源列表包&#xff1a;#apt-get update更新系统软件: #apt-get upgrade#官方源 deb http://http.kali.org/kali kali main non-free contrib deb-src http://http.kali.org/kali kali main non-fre…

微信小程序结合Java后端实现登录注册

微信小程序登录微信用户&#xff0c;授权信息&#xff0c;相关实体类微信用户表实体类获取微信的token常量抽取httpClient工具&#xff0c;用于发送请求获取tokennbplus pom工具类请求微信后台&#xff0c;获取openid&#xff0c;返回的是json登录或者注册完整业务实现&#xf…

[转]js实现简单的双向数据绑定

转自&#xff1a;http://www.see-source.com/blog/300000038/444 双向数据绑定指的就是&#xff0c;绑定对象属性的改变到用户界面的变化的能力&#xff0c;反之亦然。换种说法&#xff0c;如果我们有一个user对象和一个name属性&#xff0c;一旦我们赋了一个新值给user.name,在…

zookeeper作为服务注册中心

zk客户端消费者pom, 排除依赖yaml 入驻zk主启动配置restTemplate ribbon负载均衡调用服务提供者调用实现服务提供者pomyamlmainboot提供被调用的服务linux命令查看zk的服务&#xff0c;结点信息客户端消费者 pom, 排除依赖 <?xml version"1.0" encoding"…

写一个简单控制台启动的mcv服务

1.在项目工程里添加wcf服务&#xff0c;工程中会出现两个文件IService.cs和Service.cs. IService.cs中定义服务中的接口&#xff0c;接口必须加特性[OperationContract]才能在客户端添加服务后&#xff0c;实例化对象中发现该函数。 namespace ConsoleApplication1 { [ServiceC…

consul作为服务注册中心

consulconsul下载地址providerorderconsul 由go语言编写的一款优秀的服务注册中心应用。 https://www.consul.io/intro/index.html 中文文档 功能&#xff1a; 1. 服务发现 提供HTTP和DNS两种发现方式 2. 健康监测 支持多种协议&#xff0c;HTTP、TCP、Docker、Shell脚本定制…

ribbon, restTemplate 负载均衡服务调用

ribbonribbon conceptribbon核心组件IRule模仿源码重写轮询ribbon concept spring cloud ribbon 是基于Netflix ribbon实现的一套客户端负载均衡的工具。 简单的说&#xff0c; Ribbon是Netflix发布的开源项目&#xff0c; 主要功能是提供客户端的软件负载均衡算法和服务 完善的…

网页排版出现空白

网页顶部多了一个空白行&#xff0c;甚至引起了式样的错乱&#xff0c;样式都设置好了&#xff0c;可还是有空白行。很是奇怪&#xff0c;后来搜索了一下&#xff0c;找到原因了。就是因为页面编码时加了BOM&#xff0c;才导致的空白行&#xff0c;怎么也去不掉。 分析原因&…

openfeign 负载均衡调用服务

https://github.com/spring-cloud/spring-cloud-openfeign openFeign, fegin &#x1f446;open feginopenFegin使用日志打印配置类open fegin Feign是一个声明式的web服务客户端&#xff0c;让编写web服务客户端变得非常容易&#xff0c;只需创建一个接口并在接口上添加注解即…

MVC中使用ajax传递json数组

解决方法 去www.json.org下载JSON2.js再调用JSON.stringify(JSONData)将JSON对象转化为JSON串。var people [{ "UserName": "t1", "PassWord": "111111", "Sex": "男" }, { "UserName": "t2"…

hystrix断路器引发的相关概念

1 分布式系统面临的问题 服务雪崩 多个微服务之间调用的时候&#xff0c;假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的"扇出”&#xff0c;如果扇出的链路上某个微服务的调用响应时间过长或者不可用&#xff0c;对微服务A的调用就会…

ABAP 弹出框自建内容POPUP

可以自己设计内容&#xff0c;仅供参考。转载于:https://www.cnblogs.com/matinal/p/4135269.html