zoukankan      html  css  js  c++  java
  • poj 1325 Machine Schedule 最小顶点覆盖

    题意

      两个机器A,B, 分别有 N,M个工作模式, K个作业,可以在( Ai, Bj ) 模式下工作. 机器最初在模式0下.

    问最小的 切换模式次数.

    解题思路

      A, B 两个天然二分图顶点集合,   A,B机器上的两个模式之间连边即为 作业K. 

      最小的切换次数, 即为 最小顶点覆盖数.

      特殊的定理是, 二分图中  最小顶点覆盖 = 最大匹配.  (仅仅在二分图中满足. 主要是由于最大独立点集导致)

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    const int N = 110;
    
    int n, m, k;
    int ma[N], mb[N];
    
    bool g[N][N], vis[N];
    
    int path( int u ){
        for(int v = 1; v < m; v++){
            if( g[u][v] && !vis[v] ){
                vis[v] = 1;
                if( ma[v] == -1 || path( ma[v] ) ){
                    ma[v] = u; mb[u] = v;
                    return 1;    
                }
            }    
        }    
        return 0;
    }
    int main(){
        while( scanf("%d", &n), n ){
            scanf("%d%d", &m,&k);
            memset( g, 0, sizeof(g) );
            int x, a, b;
            for(int i = 0; i < k; i++){
                scanf("%d%d%d", &x,&a, &b);
                g[a][b] = 1;
            }
            memset( ma, 0xff, sizeof(ma) );
            memset( mb, 0xff, sizeof(mb) );
            int res = 0;
            for(int i = 1; i < n; i++){
                if( mb[i] == -1 ){
                    memset( vis, 0, sizeof(vis));
                    res += path( i );
                }
            }
            printf("%d\n", res );
            
        }    
        return 0;
    }
  • 相关阅读:
    活动安排
    中国剩余定理
    欧拉回路
    单词游戏
    Ant Trip
    John's Trip
    太鼓达人
    相框
    原始生物
    Blockade
  • 原文地址:https://www.cnblogs.com/yefeng1627/p/2995849.html
Copyright © 2011-2022 走看看