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

时间:2022-11-05 19:36:46
//匈牙利算法-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)的更多相关文章

  1. HDU - 1150 POJ - 1325 Machine Schedule 匈牙利算法(最小点覆盖)

    Machine Schedule As we all know, machine scheduling is a very classical problem in computer science ...

  2. &lbrack;模板&rsqb; 匈牙利算法&amp&semi;&amp&semi;二分图最小字典序匹配

    匈牙利算法 简介 匈牙利算法是一种求二分图最大匹配的算法. 时间复杂度: 邻接表/前向星: \(O(n * m)\), 邻接矩阵: \(O(n^3)\). 空间复杂度: 邻接表/前向星: \(O(n ...

  3. ACM&sol;ICPC 之 电力网络-EK算法&lpar;POJ1459&rpar;

    按照电站发电(从源点到电站),消费者消费(从消费者到汇点)的想法构建网络,以下是EK解法 //网络流EK算法 //Time:922Ms memory:224K #include<iostream ...

  4. ACM&sol;ICPC 之 网络流入门-EK算法&lpar;参考模板&rpar;&lpar;POJ1273&rpar;

    基于残留网络与FF算法的改进-EK算法,核心是将一条边的单向残留容量的减少看做反向残留流量的增加. //网络流 //EK算法 //Time:16Ms Memory:348K #include<i ...

  5. 2016 ACM&sol;ICPC Asia Regional Dalian Online HDU 5877 Weak Pair treap &plus; dfs序

    Weak Pair Problem Description   You are given a rooted tree of N nodes, labeled from 1 to N. To the  ...

  6. Strategic Game(匈牙利算法,最小点覆盖数)

    Strategic Game Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. &num; 匈牙利算法&lpar;二分图最大匹配)- hdu 过山车

    匈牙利算法(二分图最大匹配)- hdu 过山车 Hdu 2063 二分图:图中的点可以分成两组U,V,所有边都是连接U,V中的顶点.等价定义是:含奇数条边的图. 匹配:一个匹配是一个边的集合,其中任意 ...

  8. 匈牙利算法实战codevs1022覆盖

    1022 覆盖    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解  查看运行结果     题目描述 Description 有一个N×M的单位方格中 ...

  9. hdu 2444 The Accomodation of Students&lpar;二分匹配 匈牙利算法 邻接表实现&rpar;

    The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

随机推荐

  1. Android Time类 奇葩的设定

    Android 的Time.MONTH默认是0-11表示1-12月,小白表示坑爹啊,浪费多少精力啊.

  2. Linux下调试程序方法

    您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序.本文描述了几种可以用来调试在 Linux 上运行的程序的方法.我们将回顾四种调试问 ...

  3. Codeforces 715A&period; Plus and Square Root&lbrack;数学构造&rsqb;

    A. Plus and Square Root time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  4. css&plus;JS实现遮罩弹框

    <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta nam ...

  5. Windows下配置使用MemCached

    工具: memcached-1.2.6-win32-bin.zip     MemCached服务端程序(for win) Memcached Manager             win下的Mem ...

  6. SQL做日历

    DECLARE @DATE DATETIME SET @DATE=GETDATE() SELECT SUN -DAY(@DATE),@DATE))=@DATE THEN '*' ELSE '' END ...

  7. &lbrack;Effective C&plus;&plus; --024&rsqb;若所有参数皆需类型转换,请为此采用non-member函数

    引言 假设我们有这样的类: class A{ public: A(, ) {}; int num() const; int den() const; const A operator* (const ...

  8. Mac下如何用SSH连接远程Linux服务器

     终端命令 a).打开Mac的命令终端 b).输入ssh -p 22 root@102.210.86.213 它会提示你输入密码,输入正确的密码之后,你就发现已经登陆成功了.(22: 端口号 root ...

  9. Bacnet协议IP采集开发 总结

    一.开发准备     a.模拟器  VTS和BACnetDeviceSimulator b.主站  BACnetScan c.参考文档 http://wenku.baidu.com/view/3052 ...

  10. 在Airtest中如何使用无线模式控制手机

    在使用Airtest超快速开发App爬虫文章的最后,我们留了一个尾巴:如何启动Airtest的无线模式,不用USB线就能控制手机? 本文将会讲到具体的做法.做法分为两种:第一种是在Airtest的ID ...