给出一系列任务,每个任务可以在机器A的某个模式,或者在机器B的某个模式下完成。机器A和B每切换一次模式需要重启一次。问完成这些任务,最少需要重启机器多少次?

把任务看作边 “重启”操作看作点

这道题就是一个裸的二分图最小点覆盖

然后呢 最小点覆盖 NP完全问题

然后呢 二分图中 最小点覆盖等于最大匹配

我真是做TMD无敌棒槌终极骚猪喷香油水水之终极猪皮皮之麻辣臭皮小骚猪

好的好的随便写个匈牙利10分钟AC

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<cstring>
using namespace std; const int Max=;
int n,m,yM[Max];
bool vis[Max],map[Max][Max]; bool SearchPath(int u)
{
for(int v=;v<m;v++)
if(!vis[v] && map[u][v])
{
vis[v]=true;
if(yM[v]==- || SearchPath(yM[v]))
{
yM[v]=u;
return true;
}
}
return false;
} int MaxMatch()
{
int u,ret=;
memset(yM,-,sizeof(yM));
for(u=;u<n;u++)
{
memset(vis,false,sizeof(vis));
if(SearchPath(u))
ret++;
}
return ret;
} int main()
{
int i,k,u,v;
while(scanf("%d",&n),n)
{
scanf("%d%d",&m,&k);
memset(map,,sizeof(map));
while(k--)
{
scanf("%d%d%d",&i,&u,&v);
if(u!=&&v!=) //如果有一个有0,则这个工作不用重启时间
map[u][v]=;
}
cout<<MaxMatch()<<endl;
}
return ;
}

最新文章

  1. centos6.5下安装qq2012
  2. Unity 4.x Asset Bundle 重名
  3. Code[VS] 1022 覆盖 题解
  4. [ActionScript 3.0] AS3.0 动态加载显示内容
  5. java自定义注解注解方法、类、属性等等【转】
  6. ASP.NET&amp;AJAX&amp;JSON - 动态读取数据
  7. 如何开始你的CTF比赛之旅-网站安全-
  8. 动态创建WebService
  9. jquery-ui 之droppable详解
  10. Ubuntu开机出现:Fontconfig warning:&quot;/etc/fonts/conf.d/65-droid-sans-fonts.conf&quot;的解决办法
  11. CListCtrl插入数据避免闪烁
  12. fiddler还是浏览器的问题
  13. Linux学习之路 -- 简单日常使用命令
  14. java注解及在butternife中的实践和原理
  15. MySQL数据库日志文件(redo与undo)
  16. [SDOI2018] 旧试题
  17. JZOJ5431 捕老鼠
  18. python六十五课——单元测试(一)
  19. 213. House Robber II 首尾相同的偷窃问题
  20. 【LeetCode】13. 罗马数字转整数

热门文章

  1. form 表单&lt;input type=&quot;button&quot; value=&quot;登录&quot; onclick=&quot;loginSubmit ()&quot;/&gt; 点击提示 Uncaught TypeError: loginSubmit is not a function
  2. predis操作大全
  3. vscode使用vue中的v-for提示错误
  4. UITableViewCell使用时注意事项
  5. ubuntu ssh免密码登录
  6. eclipse设置高亮显示的颜色
  7. java.net.UnknownHostException异常处理
  8. 关于CKEDITOR的一些小问题
  9. JavaScript中有时候需要获取当前的时间戳
  10. JavaWeb -- Servlet+JSP+JavaBean(MVC)模式