I and OI
Past...

记忆化搜索,f[u,k]表示到节点u时,剩下k次失控的机会,所能得到的最大快乐值.
f[u,k]=max{f[v,k]+w[u,v]}
f[u,k]=min(f[u,k],f[v,k-1]+w[u,v]) (v是u的儿子)

 

/************************************************************** 
    Problem: 1916
    User: exponent 
    Language: Pascal 
    Result: Accepted 
    Time:996 ms 
    Memory:6868 kb 
****************************************************************/ 
  
type  edge=record
      v,w,n:longint; 
end; 
const maxm=150001; 
      maxn=50001; 
      maxk=11; 
var   e:array[0..maxm] of edge; 
      h:array[0..maxn] of longint; 
      f:array[0..maxn,0..maxk] of int64; 
      n,m,k,i,cnt,u,v,w:longint; 
  
  
      procedure add(u,v,w:longint); 
      begin
            inc(cnt); 
            e[cnt].v:=v; 
            e[cnt].w:=w; 
            e[cnt].n:=h[u]; 
            h[u]:=cnt; 
      end; 
  
      function min(a,b:int64):int64; 
      begin
            if a>b then exit(b); exit(a); 
      end; 
  
      function max(a,b:int64):int64; 
      begin
            if a>b then exit(a); exit(b); 
      end; 
  
      function calc(a,u,r:longint):int64; 
      var   v,p:longint; 
            tmp:int64; 
      begin
            if f[u,r]>0 then exit(f[u,r]); 
            p:=h[u]; 
            tmp:=0; 
            while p<>0 do
            begin
                  v:=e[p].v; 
                  if v<>a then
                    tmp:=max(tmp,calc(u,v,r)+e[p].w); 
                  p:=e[p].n; 
            end; 
            if r>0 then
            begin
                  p:=h[u]; 
                  while p<>0 do
                  begin
                        v:=e[p].v; 
                        if v<>a then
                          tmp:=min(tmp,calc(u,v,r-1)+e[p].w); 
                        p:=e[p].n; 
                  end; 
            end; 
            f[u,r]:=tmp; 
            exit(tmp); 
      end; 
  
begin
      readln(n,m,k); 
      for i:=1 to m do
      begin
            readln(u,v,w); 
            add(u,v,w); 
      end; 
  
      writeln(calc(0,1,k)); 
end.
posted on 2011-08-24 17:50  exponent  阅读(274)  评论(0编辑  收藏  举报