ACM/ICPC 之 机器调度-匈牙利算法解最小点覆盖集(DFS)(POJ1325)
//匈牙利算法-DFS
//求最小点覆盖集 == 求最大匹配
//Time:0Ms Memory:208K
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
#define MAX 105
#define INF 0x3f3f3f3f
int n,m,k;
int gp[MAX][MAX];
bool sx[MAX],sy[MAX]; //访问数组
int cx[MAX],cy[MAX]; //匹配数组
int path(int u)
{
sx[u] = true;
for(int i = 1; i < m; i++) //从模式1开始枚举
{
if(gp[u][i] && !sy[i]) { //邻接且未访问
sy[i] = true;
if(!cy[i] || path(cy[i])){ //v未匹配 或 可从cy[v]出发找到一条增广路
cx[u] = i; cy[i] = u;
return 1; //回退中修改增广路匹配
}
}
}
return 0;
}
int getMaxMatch()
{
int maxMatch = 0;
memset(cx,0,sizeof(cx));
memset(cy,0,sizeof(cy));
for(int i = 1; i < n; i++) //作业完成模式在0时不需重启-从模式1开始枚举
{
if(!cx[i]){ //模式0时
memset(sx, false, sizeof(sx));
memset(sy, false, sizeof(sy));
maxMatch += path(i);
}
}
return maxMatch;
}
int main()
{
//freopen("in.txt", "r", stdin);
while(scanf("%d", &n), n)
{
scanf("%d%d", &m, &k);
memset(gp,0,sizeof(gp));
for(int i = 0; i < k; i++)
{
int a,b,t;
scanf("%d%d%d", &t,&a,&b);
gp[a][b] = 1;
}
printf("%d\n", getMaxMatch());
}
return 0;
}
ACM/ICPC 之 机器调度-匈牙利算法解最小点覆盖集(DFS)(POJ1325)的更多相关文章
- HDU - 1150 POJ - 1325 Machine Schedule 匈牙利算法(最小点覆盖)
Machine Schedule As we all know, machine scheduling is a very classical problem in computer science ...
- [模板] 匈牙利算法&&二分图最小字典序匹配
匈牙利算法 简介 匈牙利算法是一种求二分图最大匹配的算法. 时间复杂度: 邻接表/前向星: \(O(n * m)\), 邻接矩阵: \(O(n^3)\). 空间复杂度: 邻接表/前向星: \(O(n ...
- ACM/ICPC 之 电力网络-EK算法(POJ1459)
按照电站发电(从源点到电站),消费者消费(从消费者到汇点)的想法构建网络,以下是EK解法 //网络流EK算法 //Time:922Ms memory:224K #include<iostream ...
- ACM/ICPC 之 网络流入门-EK算法(参考模板)(POJ1273)
基于残留网络与FF算法的改进-EK算法,核心是将一条边的单向残留容量的减少看做反向残留流量的增加. //网络流 //EK算法 //Time:16Ms Memory:348K #include<i ...
- 2016 ACM/ICPC Asia Regional Dalian Online HDU 5877 Weak Pair treap + dfs序
Weak Pair Problem Description You are given a rooted tree of N nodes, labeled from 1 to N. To the ...
- Strategic Game(匈牙利算法,最小点覆盖数)
Strategic Game Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 第46届ICPC澳门站 K - Link-Cut Tree // 贪心 + 并查集 + DFS
原题链接:K-Link-Cut Tree_第46屆ICPC 東亞洲區域賽(澳門)(正式賽) (nowcoder.com) 题意: 要求一个边权值总和最小的环,并从小到大输出边权值(2的次幂):若不存在 ...
- # 匈牙利算法(二分图最大匹配)- hdu 过山车
匈牙利算法(二分图最大匹配)- hdu 过山车 Hdu 2063 二分图:图中的点可以分成两组U,V,所有边都是连接U,V中的顶点.等价定义是:含奇数条边的图. 匹配:一个匹配是一个边的集合,其中任意 ...
- 匈牙利算法实战codevs1022覆盖
1022 覆盖 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 查看运行结果 题目描述 Description 有一个N×M的单位方格中 ...
随机推荐
- jq.validate隐藏元素忽略验证
jq.validate隐藏元素忽略验证 现在有这样一个需求,当触发某类事件时候,需要在页面中显示input框,但是当不需要加载页面中的元素时候,进行隐藏.在这个需求的前提下,程序中对于input中的输 ...
- css 使图片水平垂直居中
1.利用display:table-cell,具体代码如下: html代码如下: <div class="img_wrap"> <img src="wg ...
- sqlmap --dns-domain模拟实践
因为看到乌云的这一篇文章 http://drop.xbclub.org/static/drops/tips-5283.html 里面的提到的用sqlmap 的--dns-domain 进行dns 注入 ...
- iOS 组件化漫谈
1.准备工作 由于工程越来越大,里面的文件也越来越多.很多时候merge代码的时候工程文件起了冲突之后,若 .xcodeproj文件冲突 打开之后很难以修改. 架构其实相对开发来说还是比较难于下手的东 ...
- Pitfalls: C++ 中的index运算符
名可名, 非常名 在调一个题目的过程中发现了一个之前从未意识到的问题. 考虑如下代码 vector<int> a; int f(int x){ a.push_back(x); return ...
- csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法
保存在csv中的 013812345678,前面的0会被去掉,后面是科学计数法显示.保存成 col1,="013812345678" 即可. 注意,分隔符逗号后面直接接“=”等号. ...
- 前端CDN公共库
通过使用公共的CDN脚本和样式库,可以在一定程度上加速访问.节省服务器流量.提升你的网站用户体验.本文将介绍国内比较常用的几种免费的CDN库,包括百度.新浪.360.又拍和七牛等. 百度CDN公共库 ...
- 502 Bad Gateway深究
早上收到502报警,设置的报警规则是502错误两分钟超过500就报警. 排障流程: 日志分析系统报障-->查看日志系统日志-->nginx错误日志-->php错误日志-->ph ...
- Swift-代理
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Helvetica Neue"; color: #535b60; bac ...
- Oracle交易流水号问题
需求:生成交易流水号,每次新增一条记录时都自动加1,且流水号形式为000000001形式的10位数字. 思路:利用序列可以生成自增的流水号,只需要在前面添加N个0即可,同时,由于数字的长度一定,因此可 ...