pku1325 Machine Schedule
2012-03-04 17:31
197 查看
有两台机器A,B,分别有n,m个进程,有k个任务,每个任务要么在A的x进程上完成,要么在B的y进程上完成,但机器换进程要时间,求完成方案下的最短时间。
最小覆盖问题,
通式:方案有两个,作为二分图的对立点,而任务为点,完成每一个任务的两种方案连边,求最大匹配即可,因为“最小覆盖=最大匹配”
很不理解输入里面的那个i有什么用??
View Code
最小覆盖问题,
通式:方案有两个,作为二分图的对立点,而任务为点,完成每一个任务的两种方案连边,求最大匹配即可,因为“最小覆盖=最大匹配”
很不理解输入里面的那个i有什么用??
View Code
program pku1325(input,output); var f : array[0..201,0..201] of boolean; lk : array[0..201] of longint; v : array[0..201] of boolean; n,m,k : longint; procedure init; var i,ii,xx,yy : longint; begin fillchar(f,sizeof(f),false); fillchar(lk,sizeof(lk),0); for i:=1 to k do begin readln(ii,xx,yy); f[xx,yy+n]:=true; end; end; { init } function find(now : longint):boolean; var i : longint; begin for i:=n+1 to n+m do if (not v[i])and(f[now,i]) then begin v[i]:=true; if (lk[i]=0)or(find(lk[i])) then begin lk[i]:=now; exit(true); end; end; exit(false); end; { find } function main():longint; var i : longint; begin main:=0; for i:=1 to n do begin fillchar(v,sizeof(v),false); if find(i) then inc(main); end; exit(main); end; { main } begin read(n); while n<>0 do begin readln(m,k); init; writeln(main); read(n); end; end.
相关文章推荐
- pku 3014 &&pku 1325
- pku1325 Machine Schedule
- pku 1325(二分匹配模版)
- PKU 1325 Machine Schedule
- TJU 1325/PKU 2607 Fire Station
- pku1325(二分图最小覆盖)
- PKU 3983
- PKU1062------昂贵的聘礼
- PKU POJ 1664 放苹果 DP
- 2.7寸1325黄字OLED显示模组
- PKU 1564
- 【并查集】HDU 1325 Is It A Tree?
- hdu 1325 Is It A Tree?
- PKUSC2013 BUG集锦
- HDU 1325 Is It A Tree? (POJ 1308)
- PKU1861Kruskal算法
- pku 1061 青蛙约会
- PKU 2356 Find a multiple
- HDU 1325 Is It A Tree?
- pku 2262