zoukankan      html  css  js  c++  java
  • dinic板子

     1 procedure dinic;
     2 begin
     3   while bfs do inc(ans,dfs(s,maxlongint));
     4 end;
     5 
     6 function bfs:boolean;
     7 var h,tail,i,j:longint;
     8 begin
     9   fillchar(dis,sizeof(dis),$3f);
    10   h:=0;tail:=1;l[1]:=s;dis[s]:=0;
    11   while h<>tail do
    12   begin
    13     inc(h);i:=l[h];j:=head[i];
    14     while j>0 do
    15     begin
    16       if(dis[i]+1<dis[q[j]])and(flow[j]>0) then
    17       begin
    18         inc(tail);l[tail]:=q[j];
    19         dis[q[j]]:=dis[i]+1;
    20       end;
    21       j:=next[j];
    22     end;
    23   end;
    24   if dis[t]=$3f3f3f3f then exit(false) else exit(true);
    25 end;
    26 
    27 function dfs(i,ll:longint):longint;
    28 var j,tmp,x:longint;
    29 begin
    30   if i=t then exit(ll);
    31   j:=head[i];x:=0;
    32   while j>0 do
    33   begin
    34     if(flow[j]>0)and(dis[q[j]]=dis[i]+1) then
    35     begin
    36       tmp:=dfs(q[j],min(ll-x,flow[j]));
    37       dec(flow[j],tmp);
    38       inc(flow[j xor 1],tmp);
    39       inc(x,tmp);
    40       if x=ll then exit(ll);
    41     end;
    42     j:=next[j];
    43   end;
    44   if x=0 then dis[i]:=-1;
    45   exit(x);
    46 end;
  • 相关阅读:
    VM player无法联网问题
    寄存器
    linux下的文件操作
    linux的切换目录操作
    linux的ls -al指令
    python对ASC码的加减
    ASC码速记
    pyhton的返回值
    intellij 调试方法
    2015,5.10
  • 原文地址:https://www.cnblogs.com/oldjang/p/6395954.html
Copyright © 2011-2022 走看看