zoukankan      html  css  js  c++  java
  • hdu 1150 最小点覆盖

    题目大意;有两台机器A和B以及N个需要运行的任务。每台机器有M种不同的模式,而每个任务都恰好在一台机器上运行。如果它在机器A上运行,则机器A需要设置为模式xi,如果它在机器B上运行,则机器A需要设置为模式yi。每台机器上的任务可以按照任意顺序执行,但是每台机器每转换一次模式需要重启一次。请合理为每个任务安排一台机器并合理安排顺序,使得机器重启次数尽量少。
     
    注意状态为0的即可
     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cstring>
     4 using namespace std;
     5 const int MAXN = 510;
     6 int uN,vN;//u,v的数目,使用前面必须赋值
     7 int g[MAXN][MAXN];//邻接矩阵
     8 int linker[MAXN];
     9 bool used[MAXN];
    10 bool dfs(int u)
    11 {
    12     for(int v = 0; v < vN;v++)
    13     if(g[u][v] && !used[v])
    14     {
    15         used[v] = true;
    16         if(linker[v] == -1 || dfs(linker[v]))
    17         {
    18             linker[v] = u;
    19             return true;
    20         }
    21     }
    22     return false;
    23 }
    24 int hungary()
    25 {
    26     int res = 0;
    27     memset(linker,-1,sizeof(linker));
    28     for(int u = 0;u < uN;u++)
    29     {
    30         memset(used,false,sizeof(used));
    31         if(dfs(u))res++;
    32     }
    33     return res;
    34 }
    35 int main()
    36 {
    37     int i,j,k;
    38     //freopen("1.in","r",stdin);
    39     while(scanf("%d",&uN)!=EOF)
    40     {
    41         if(uN==0)   break;
    42         scanf("%d%d",&vN,&k);
    43         int p,q;
    44         memset(g,0,sizeof(g));
    45         while(k--)
    46         {
    47             scanf("%d%d%d",&i,&p,&q);
    48             if(p>0&&q>0)    g[p][q]=1;
    49         }
    50         printf("%d
    ",hungary());
    51     }
    52     return 0;
    53 }
  • 相关阅读:
    canvas绘制饼状图
    canvas绘制在画布中心的一段文字
    canvas绘制一个根据数据的饼图
    canvas绘制一个圆分成六等分颜色随机
    canvas绘制四分之一个圆弧
    canvas实现转换
    canvas曲线的绘制
    canvas绘制一个折线图
    canvas绘制一个渐变颜色的矩形
    canvas
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4314590.html
Copyright © 2011-2022 走看看