zoukankan      html  css  js  c++  java
  • pku1325 Machine Schedule

    有两台机器A,B,分别有n,m个进程,有k个任务,每个任务要么在A的x进程上完成,要么在B的y进程上完成,但机器换进程要时间,求完成方案下的最短时间。

    最小覆盖问题,

    通式:方案有两个,作为二分图的对立点,而任务为点,完成每一个任务的两种方案连边,求最大匹配即可,因为“最小覆盖=最大匹配”

    很不理解输入里面的那个i有什么用??

    View Code
     1 program pku1325(input,output);
    2 var
    3 f : array[0..201,0..201] of boolean;
    4 lk : array[0..201] of longint;
    5 v : array[0..201] of boolean;
    6 n,m,k : longint;
    7 procedure init;
    8 var
    9 i,ii,xx,yy : longint;
    10 begin
    11 fillchar(f,sizeof(f),false);
    12 fillchar(lk,sizeof(lk),0);
    13 for i:=1 to k do
    14 begin
    15 readln(ii,xx,yy);
    16 f[xx,yy+n]:=true;
    17 end;
    18 end; { init }
    19 function find(now : longint):boolean;
    20 var
    21 i : longint;
    22 begin
    23 for i:=n+1 to n+m do
    24 if (not v[i])and(f[now,i]) then
    25 begin
    26 v[i]:=true;
    27 if (lk[i]=0)or(find(lk[i])) then
    28 begin
    29 lk[i]:=now;
    30 exit(true);
    31 end;
    32 end;
    33 exit(false);
    34 end; { find }
    35 function main():longint;
    36 var
    37 i : longint;
    38 begin
    39 main:=0;
    40 for i:=1 to n do
    41 begin
    42 fillchar(v,sizeof(v),false);
    43 if find(i) then
    44 inc(main);
    45 end;
    46 exit(main);
    47 end; { main }
    48 begin
    49 read(n);
    50 while n<>0 do
    51 begin
    52 readln(m,k);
    53 init;
    54 writeln(main);
    55 read(n);
    56 end;
    57 end.



  • 相关阅读:
    js判断手机访问网站自动跳转到手机版
    php 操作数组 (合并,拆分,追加,查找,删除等)
    jQuery传值方法汇总:jQuery.get、jQuery.getJSON、jQuery.post
    JS 页面跳转
    优秀的项目管理者书籍
    Python 的人生
    架构设计流程梳理
    重新定义自己思考问题的方式
    梳理
    程序员高效工具列表
  • 原文地址:https://www.cnblogs.com/neverforget/p/2379418.html
Copyright © 2011-2022 走看看