poj1325
2024-10-21 18:30:50
给出一系列任务,每个任务可以在机器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 ;
}
最新文章
- centos6.5下安装qq2012
- Unity 4.x Asset Bundle 重名
- Code[VS] 1022 覆盖 题解
- [ActionScript 3.0] AS3.0 动态加载显示内容
- java自定义注解注解方法、类、属性等等【转】
- ASP.NET&;AJAX&;JSON - 动态读取数据
- 如何开始你的CTF比赛之旅-网站安全-
- 动态创建WebService
- jquery-ui 之droppable详解
- Ubuntu开机出现:Fontconfig warning:";/etc/fonts/conf.d/65-droid-sans-fonts.conf";的解决办法
- CListCtrl插入数据避免闪烁
- fiddler还是浏览器的问题
- Linux学习之路 -- 简单日常使用命令
- java注解及在butternife中的实践和原理
- MySQL数据库日志文件(redo与undo)
- [SDOI2018] 旧试题
- JZOJ5431 捕老鼠
- python六十五课——单元测试(一)
- 213. House Robber II 首尾相同的偷窃问题
- 【LeetCode】13. 罗马数字转整数
热门文章
- form 表单<;input type=";button"; value=";登录"; onclick=";loginSubmit ()";/>; 点击提示 Uncaught TypeError: loginSubmit is not a function
- predis操作大全
- vscode使用vue中的v-for提示错误
- UITableViewCell使用时注意事项
- ubuntu ssh免密码登录
- eclipse设置高亮显示的颜色
- java.net.UnknownHostException异常处理
- 关于CKEDITOR的一些小问题
- JavaScript中有时候需要获取当前的时间戳
- JavaWeb -- Servlet+JSP+JavaBean(MVC)模式