zoukankan      html  css  js  c++  java
  • poj 1325 machine schedule

    题目大意:

    有两个机器,两种机器各有n,m种模式,有k个任务,每个任务可以分别由两种机器的一种模式来完成,每次切换模式都需要重启机器,问最少重启几次机器可以完成所有任务(开始两台机器都为模式0)

    思路:

    匈牙利最小点覆盖

    因为只有两种机器,可以把每种模式都变成点,所有点只有两种颜色,就是一个二分图

    然后把任务作为边,连接两种模式

    然后直接上匈牙利求一下最小点覆盖ac

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    using namespace std;
    int n,m,k,a,b,c,link[210];
    bool map[210][210],vis[210];
    bool find(int x)
    {
         for(int i=0;i<m;i++)
         {
             if(map[x][i]&&!vis[i])
             {
                 vis[i]=true;
                 if(link[i]==-1||find(link[i])) {link[i]=x;return true;}
             }
         }
         return false;
    }
    int main()
    {
        while(scanf("%d",&n)&&n!=0)
        {
            scanf("%d%d",&m,&k);
            int ans=0;
            memset(link,0xff,sizeof(link));
            memset(map,false,sizeof(map));
            for(int i=0;i<k;i++) {scanf("%d%d%d",&a,&b,&c);if(b!=0&&c!=0)map[b][c]=true;}
            for(int i=0;i<n;i++)
            {
                memset(vis,false,sizeof(vis));
                if(find(i)) ans++;
            }
            printf("%d
    ",ans);
        }
    }
    View Code
  • 相关阅读:
    css 正方体
    鼠标放上去,不同的cursor光标类型
    文件上传用到的函数 20150205
    PHP常用正则表达式汇总
    代码练习之 登陆 PHP会话控制 session cookie
    正则表达式全部符号解释
    字典转模型
    Day11 TableView
    Day10
    Day9
  • 原文地址:https://www.cnblogs.com/yyc-jack-0920/p/7224336.html
Copyright © 2011-2022 走看看