http://acm.hdu.edu.cn/showproblem.php?pid=2813

裸二分图最优匹配,需要用两个map把武将名字映射到点的序号上

#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
using namespace std;
const int N=;
const int INF=0x3f3f3f3f;
int nx,ny;
int linker[N],lx[N],ly[N],slack[N];
int visx[N],visy[N],w[N][N];
int DFS(int x)
{
visx[x]=;
for(int y=;y<=ny;y++){
if(visy[y])
continue;
int tmp=lx[x]+ly[y]-w[x][y];
if(tmp==){
visy[y]=;
if(linker[y]==- || DFS(linker[y])){
linker[y]=x;
return ;
}
}else if(slack[y]>tmp){
slack[y]=tmp;
}
}
return ;
}
int KM()
{
int i,j;
memset(linker,-,sizeof(linker));
memset(ly,,sizeof(ly));
for(i=;i<=nx;i++)
for(j=,lx[i]=-INF;j<=ny;j++)
if(w[i][j]>lx[i])
lx[i]=w[i][j];
for(int x=;x<=nx;x++){
for(i=;i<=ny;i++)
slack[i]=INF;
while(){
memset(visx,,sizeof(visx));
memset(visy,,sizeof(visy));
if(DFS(x))
break;
int d=INF;
for(i=;i<=ny;i++)
if(!visy[i] && d>slack[i])
d=slack[i];
for(i=;i<=nx;i++)
if(visx[i])
lx[i]-=d;
for(i=;i<=ny;i++)
if(visy[i])
ly[i]+=d;
else
slack[i]-=d;
}
}
int res=;
for(i=;i<=ny;i++)
if(linker[i]!=-)
res+=w[linker[i]][i];
return res;
}
int main()
{
int n,m,k ;
while(~scanf("%d%d%d",&n,&m,&k))
{
nx=n;ny=m;
for(int i= ;i<N ;i++)
for(int j= ;j<N ;j++)
w[i][j]=-INF ;
int p1=,p2= ;
map <string,int> mp1,mp2 ;
for(int i= ;i<k ;i++)
{
char a[],b[] ;
int v ;
scanf("%s%s%d",a,b,&v) ;
string s1(a),s2(b) ;
if(!mp1[s1])mp1[s1]=p1++ ;
if(!mp2[s2])mp2[s2]=p2++ ;
w[mp1[s1]][mp2[s2]]=-v ;
}
int ans=KM();
printf("%d\n",-ans);
}
return ;
}

HDU 2813的更多相关文章

  1. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

  2. hdu图论题目分类

    =============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...

  3. HDU图论题单

    =============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...

  4. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  6. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  7. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  8. HDU 4006The kth great number(K大数 +小顶堆)

    The kth great number Time Limit:1000MS     Memory Limit:65768KB     64bit IO Format:%I64d & %I64 ...

  9. HDU 1796How many integers can you find(容斥原理)

    How many integers can you find Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d ...

随机推荐

  1. React Native的SliderIOS滑块组件

    import React,{Component}from 'react'; import { AppRegistry, StyleSheet, Text, View, SliderIOS, } fro ...

  2. 学霸网站之NABC

    1.Need 本次学霸系统的设计是基于学长的版本,在此基础上,我们准备进一步完善已有版块,在用户信息管理.提问.搜索.分类.评论.个性化界面.用户反馈.娱乐.积分获取等方面加入新的功能. 一.用户信息 ...

  3. YOLO V2论文理解

    概述 YOLO(You Only Look Once: Unified, Real-Time Object Detection)从v1版本进化到了v2版本,作者在darknet主页先行一步放出源代码, ...

  4. Android JNI学习(四)——JNI的常用方法的中文API

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  5. jsp动作之 forward

    forward说明了,就想当于php的include,require函数.(但是它是跳转.forward之前的数据都不会显示) 这么说你明白了吗.就是包含,说的好听点就是跳转,但是url地址栏却是没有 ...

  6. memcached哈希表操作主要逻辑笔记

    以下注释的源代码都在memcached项目的assoc.c文件中 /* how many powers of 2's worth of buckets we use */ unsigned int h ...

  7. 搭建Eclipse+ADT+Android SDK 安卓开发环境

    安装JDK 请看JDK环境搭建 即可. 安装Eclipse Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境.幸运 ...

  8. Confluence 6 获得 Active Directory 服务器证书

    上面的步骤说明了如何在你的 Microsoft Active Directory服务器上安装 certification authority (CA).这一步,你需要为你的 Microsoft Act ...

  9. hdu-6324-博弈

    Problem F. Grab The Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Ja ...

  10. nyoj306 二分+DFS

    走迷宫 时间限制:1000 ms  |  内存限制:65535 KB 难度:5   描述 Dr.Kong设计的机器人卡多非常爱玩,它常常偷偷跑出实验室,在某个游乐场玩之不疲.这天卡多又跑出来了,在SJ ...