当前位置: 首页 > news >正文

KM模板

KM模板

HDU2255

老是听说费用流被稠密图卡

没找到\(N^3\)的讲解,只学了个\(N^4\)的dfs,不敢交UOJ..

Code:

#include <cstdio>
#include <cstring>
#include <algorithm>
#define yuucute 1
using std::min;
using std::max;
const int N=302;
int va[N],vb[N],la[N],lb[N],w[N][N],mat[N],mi,n;
bool dfs(int now)
{
    va[now]=1;
    for(int i=1;i<=n;i++)
        if(!vb[i])
        {
            if(w[now][i]==la[now]+lb[i])
            {
                vb[i]=1;
                if(!mat[i]||dfs(mat[i]))
                    return mat[i]=now,true;
            }
            else mi=min(mi,la[now]+lb[i]-w[now][i]);
        }
    return false;
}
void work()
{
    memset(mat,0,sizeof mat);
    for(int i=1;i<=n;i++)
    {
        la[i]=-(1<<30);
        lb[i]=0;
        for(int j=1;j<=n;j++)
            scanf("%d",&w[i][j]),la[i]=max(la[i],w[i][j]);
    }
    for(int i=1;i<=n;i++)
    {
        while(yuucute)
        {
            memset(va,0,sizeof va);
            memset(vb,0,sizeof vb);
            mi=1<<30;
            if(dfs(i)) break;
            for(int j=1;j<=n;j++)
            {
                if(va[j]) la[j]-=mi;
                if(vb[j]) lb[j]+=mi;
            }
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++) ans+=w[mat[i]][i];
    printf("%d\n",ans);
}
int main()
{
    while(scanf("%d",&n)!=EOF) work();
    return 0;
}

2019.2.19

转载于:https://www.cnblogs.com/butterflydew/p/10401547.html

相关文章:

  • POJChallengeRound2 Tree 【数学期望】
  • 【BZOJ5291】[BJOI2018]链上二次求和(线段树)
  • 读书笔记--《编写高质量代码:改善Python程序的91个建议》
  • Codeforces Round #540 (Div. 3) F1. Tree Cutting (Easy Version) 【DFS】
  • volatilesynchronizeddiff
  • canvas字体样式
  • 5-发音规则(略读)
  • [洛谷P1709] [USACO5.5]隐藏口令Hidden Password
  • 树·二叉查找树ADT(二叉搜索树/排序树)
  • 两种经典电商CSS布局
  • 微信小程序 - 自定义swiper dots样式(非组件)
  • django基础 第四章 模板标签
  • C++重载赋值运算符
  • golang学习之interface与其它类型转换
  • windows系统和IE的兼容性问题
  • (三)从jvm层面了解线程的启动和停止
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 30天自制操作系统-2
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • android图片蒙层
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • HTTP那些事
  • HTTP中GET与POST的区别 99%的错误认识
  • javascript 哈希表
  • JavaScript 一些 DOM 的知识点
  • Javascript设计模式学习之Observer(观察者)模式
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Laravel5.4 Queues队列学习
  • OSS Web直传 (文件图片)
  • PHP 小技巧
  • spark本地环境的搭建到运行第一个spark程序
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 彻底搞懂浏览器Event-loop
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 你真的知道 == 和 equals 的区别吗?
  • 前端性能优化--懒加载和预加载
  • 深入浅出webpack学习(1)--核心概念
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 一些css基础学习笔记
  • raise 与 raise ... from 的区别
  • 阿里云ACE认证学习知识点梳理
  • 阿里云API、SDK和CLI应用实践方案
  • ​flutter 代码混淆
  • #图像处理
  • (待修改)PyG安装步骤
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)shell调试方法
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转载)(官方)UE4--图像编程----着色器开发
  • *Django中的Ajax 纯js的书写样式1
  • .bat批处理(六):替换字符串中匹配的子串