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

题目大意:有两台机器AB以及N个需要运行的任务。每台机器有M种不同的模式,而每个任务都恰好在一台机器上运行。如果它在机器A上运行,则机器A需要设置为模式xi,如果它在机器B上运行,则机器B需要设置为模式yi。每台机器上的任务可以按照任意顺序执行,但是每台机器每转换一次模式需要重启一次。请合理为每个任务安排一台机器并合理安排顺序,使得机器重启次数尽量少。

这里有一个知识点:二分图的最小顶点覆盖数=最大匹配数。

判断是否为二分图:当且仅当G中无奇数长度的回路,一个无向图G=<V,E>是二分图

(用增广路经求二分图最大匹配。核心:寻找增广路):

主要思路就是不断寻找增广路经,增加匹配的个数。给定一个二分图G,在G的一个子图M中,M的边集中任意两条边都不依附于同一个顶点,则称M是一个匹配。如果一个匹配中,图中的每个顶点都和图中的某条边相关联,则称此匹配为完全匹配。

增广路经:若P是图G中一条连通两个未匹配顶点的路径,并且属M的边和不属于M的边在P上交替出现,则称P为相对于M的一条增广路径。

a. P的路径长度必定为奇数,第一条边和最后一条边都不属于M.

b. P经过取反操作可以得到一个更大的匹配M。.

c. 当且仅当不存在相对于M的增广路经,M为G的最大匹配。

#include<iostream>
#include<cstring>
using namespace std;
int map[][];
int v[],p[];
int n,m,k; int Find(int x)
{
for(int i=; i<m; i++)
{
if(map[x][i]== && !v[i])
{
v[i]=;
if(p[i]==- || Find(p[i]))
{
p[i]=x;
return ;
}
}
}
return ;
} int main()
{
while(cin>>n && n)
{
cin>>m>>k;
int a,b,c;
int ans=;
memset(map,,sizeof(map));
memset(p,-,sizeof(p));
for(int i=; i<=k; i++)
{
cin>>a>>b>>c;
if(b && c)
map[b][c]=;
}
for(int i=; i<n; i++)
{
memset(v,,sizeof(v));
ans+=Find(i);
}
cout<<ans<<endl;
}
return ;
}

hdu1150 匈牙利的更多相关文章

  1. hdu-1150(二分图+匈牙利算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1150 思路:题目中给出两个机器A,B:给出k个任务,每个任务可以由A的x状态或者B的y状态来完成. 完 ...

  2. ACM/ICPC 之 机器调度-匈牙利算法解最小点覆盖集(DFS)(POJ1325)

    //匈牙利算法-DFS //求最小点覆盖集 == 求最大匹配 //Time:0Ms Memory:208K #include<iostream> #include<cstring&g ...

  3. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  4. 匈牙利算法——S.B.S.

    匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最 ...

  5. 匈牙利算法与KM算法

    匈牙利算法 var i,j,k,l,n,m,v,mm,ans:longint; a:..,..]of longint; p,f:..]of longint; function xyl(x,y:long ...

  6. C++之路进阶codevs1269(匈牙利游戏)

    1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description ...

  7. HDU1054 Strategic Game——匈牙利算法

    Strategic Game Bob enjoys playing computer games, especially strategic games, but sometimes he canno ...

  8. poj1274(匈牙利算法)

    The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22809   Accepted: 101 ...

  9. HDU1150 Machine Schedule

    匈牙利算法 目前为止还是半懂不懂的状态 #include<iostream> #include<cstdio> #include<cstring> using na ...

随机推荐

  1. 屏幕截图、录像FastStone Capture

    作为一款极其优秀好用的屏幕截图软件,FastStone Capture 具有体积小巧.功能强大.操作简便等优点,其方便的浮动工具条和便捷的快捷键堪称完美结合,截图后的图片编辑与保存选项也特别丰富和方便 ...

  2. 【leetcode】 Permutation Sequence (middle)

    The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and labeling all of the p ...

  3. struts2.0整合json

    框架:struts2.0+hibernate2+spring 今天写代码时,需要用到json,我就直接加了两个jar包:json-lib-2.1-jdk15.jar,struts2-json-plug ...

  4. addsubview跟insertsubview的区别

    子视图是以栈的方式存放的. 每次addsubview时都是在最后面添加. 每次在addsubview前和addsubview后可以看看[self.view.subViews count]: 你看看你的 ...

  5. Linux解决关闭终端后终止服务问题

    可使用nohup. 具体使用方法,参见:http://zjking.blog.51cto.com/976858/1117828

  6. window 环境安装MongoDB

    强制安装mongodb服务 命令 sc create MongoDB binPath= "D:\MongoDB\Server\3.2\bin\mongod.exe --service --d ...

  7. 浏览器方法及代码打包成APP的

    <script src=" http://static.ydbimg.com/API/YdbOnline.js" type="text/javascript&quo ...

  8. 攻城狮在路上(伍)How tomcat works(四)Tomcat的默认连接器

     在第4章中将通过剖析Tomcat4的默认连接器的代码,讨论需要什么来创建一个真实的Tomcat连接器.     注意:本章中提及的“默认连接器”是指Tomcat4的默认连接器.即使默认的连机器已经被 ...

  9. go sample - format

    go sample - format package mainimport "fmt"import "os"type point struct { x, y i ...

  10. js 上传文件后缀名的判断 var flag=false;应用

    js 上传文件后缀名的判断  var flag=false;应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...