3396: [Usaco2009 Jan]Total flow 水流
Time Limit: 1 Sec Memory Limit: 128 MB Submit: 179 Solved: 73 [ ][ ]Description
![](http://www.lydsy.com/JudgeOnline/upload/201401/af%281%29.jpg)
![](http://www.lydsy.com/JudgeOnline/upload/201401/aff%281%29.jpg)
Input
第1行输入N,之后N行每行描述一条水管,前两个英文字母表示水管的两端(大小写字母是不一样的),后一个整数表示水管的流量,流量不会超过1000.
Output
一个整数,表示总流量.
Sample Input
5 A B 3 B C 3 C D 5 D Z 4 B Z 6
Sample Output
3
HINT
Source
题解:WA了6次再读题才发现大小写字母不一样TT。别的没了,直接上sap模板A之。。
1 type 2 point=^node; 3 node=record 4 g,w:longint; 5 next,anti:point; 6 end; 7 var 8 i,j,k,l,m,n,ans,s,t:longint; 9 a:array[0..100] of point;10 d,dv:array[0..100] of longint;11 c1,c2,c3:char;12 function min(x,y:longint):longint;inline;13 begin14 if xnil do29 begin30 if (P^.w>0) and (d[x]=(d[p^.g]+1)) then31 begin32 k:=dfs(p^.g,min(p^.w,flow-dfs));33 dec(p^.w,k);34 inc(p^.anti^.w,k);35 inc(dfs,k);36 if dfs=flow then exit;37 end;38 p:=p^.next;39 end;40 if d[s]=n then exit;41 dec(dv[d[x]]);42 if dv[d[x]]=0 then d[s]:=n;43 inc(d[x]);44 inc(dv[d[x]]);45 end;46 function trans(x:char):longint;inline;47 begin48 case x of49 'A'..'Z':exit(ord(x)-ord('A')+1);50 'a'..'z':exit(ord(x)-ord('a')+27);51 end;52 end;53 function getc:longint;inline;54 begin55 repeat56 read(c1);57 until (upcase(c1)>='A') and (upcase(c1)<='Z');58 exit(trans(c1));59 end;60 begin61 readln(m);n:=52;62 for i:=1 to n do a[i]:=nil;63 s:=1;t:=26;64 for i:=1 to m do65 begin66 j:=getc;k:=getc;readln(l);67 add(j,k,l);68 end;69 fillchar(d,sizeof(d),0);70 fillchar(dv,sizeof(dv),0);71 dv[0]:=n;72 ans:=0;73 while d[s]