坚定支持goo 坚定支持goo
SB
关注数: 112 粉丝数: 152 发帖数: 9,032 关注贴吧数: 23
【最大流】推送重贴标签怎么有点奇怪啊... 先上源码 Program PUSH_Relabel; const Undef=-1; //inf='pr_MF.in'; inf=''; type Edges=Record f:Integer; //Flow c:Integer; //Max End; Vertexs=Record e:Integer;//Excess Flow h:Integer;//Height End; var v,e,s,t:Integer; Net:Array[1..500,1..500] of Edges; Vts:Array[1..500] of Vertexs; function cf(u,v:Integer) :Integer; begin if Net[u,v].c<>Undef then cf:=Net[u,v].c-Net[u,v].f else if Net[v,u].c<>undef then cf:=Net[v,u].f else cf:=0; end; procedure PUSH(u,v:Integer); var df:Integer;//Delta Flow of u.e&c(u,v) begin //if u=t then exit; if vts[u].e>cf(u,v) then df:=cf(u,v) //Gets the maximum else df:=vts[u].e; //legal flow to push WriteLn('push(',u,',',v,')=',df); if Net[u,v].c<>Undef then Net[u,v].f:=Net[u,v].f+df //Push it else Net[v,u].f:=Net[v,u].f-df; Vts[u].e:=Vts[u].e-df; //Updates The Excess Vts[v].e:=Vts[v].e+df; //Flow of u&v end; procedure Relabel(u,h:Integer); begin if u=t then exit; WriteLn('Called relabel by u=',u,',h=',h); Vts[u].h:=h+1; end; procedure Init_Preflow(s:Integer); var i,j:Integer; up,vp,data:Integer; begin for i:= 1 to v do begin Vts[i].e:=0; Vts[i].h:=0; end; for i:= 1 to v do for j:= 1 to v do begin Net[i,j].f:=0; Net[i,j].c:=Undef; end; For i:= 1 to e do begin ReadLn(up,vp,data); Net[up,vp].c:=data; end; Vts[s].h:=v; For i:=1 to v do begin if Net[s,i].c<>Undef then begin Net[s,i].f:=Net[s,i].c; Vts[i].e:=Net[s,i].c; Vts[s].e:=Vts[s].e-Net[s,i].c; end; end; end; procedure algo_Main(); var IsLow,optfd:Boolean; i,j,k:Integer; minh:Integer; begin //Init_Preflow(s); optfd:=True; Repeat WriteLn('Edges:'); For i:= 1 to v do begin For j:= 1 to v do Write(cf(i,j):2,' '); WriteLn; end; optfd:=False; for i:= 1 to v do begin IsLow:=True; minh:=MaxInt; if Vts[i].e>0 then begin for j:= 1 to v do if (Net[i,j].c<>Undef) and (Vts[j].h<Vts[i].h) then begin IsLow:=False; Break; end else begin if (minh>Vts[j].h) and (Net[i,j].c<>undef) then minh:=Vts[j].h; //WriteLn(minh); end; if (IsLow) and (i<>t) then begin Relabel(i,minh); For j:= 1 to v do Write(j,',',vts[j].h,',',vts[j].e,';'); WriteLn; optfd:=True; end; end; end; //if there exists an appicable relabel operation then perform it For i:= 1 to v do begin if (Vts[i].e>0) then begin for j:= 1 to v do if (cf(i,j)>0) and (Vts[i].h=Vts[j].h+1) then begin PUSH(i,j); For k:= 1 to v do Write(k,',',vts[k].h,',',vts[k].e,';'); WriteLn; end; end; end; WriteLn(optfd); Until not optfd; end; var i,j:Integer; up,vp,data:Integer; begin Assign(input,'pr_MF.in'); Reset(input); Assign(output,'pr_MF.out'); Rewrite(output); Readln(v,e,s,t); for i:= 1 to v do begin Vts[i].e:=0; Vts[i].h:=0; end; for i:= 1 to v do for j:= 1 to v do begin Net[i,j].f:=0; Net[i,j].c:=Undef; end; For i:= 1 to e do begin ReadLn(up,vp,data); Net[up,vp].c:=data; end; Vts[s].h:=v; For i:=1 to v do begin if Net[s,i].c<>Undef then begin Net[s,i].f:=Net[s,i].c; Vts[i].e:=Net[s,i].c; Vts[s].e:=Vts[s].e-Net[s,i].c; end; end; algo_Main(); WriteLn(Vts[t].e); Close(Input); Assign(input,''); Reset(input); ReadLn; Close(input); Close(output); end.
王校长好 王思聪,王总,2010年中国首富万达集团老总王健林的独子。iG俱乐部老板,曾以一人之力使元LGD战队解散。王总是这样打dota的。 1,游戏开始,王总选择了骨法 王总:这个英雄出什么? 盟友:梅肯 王总:哦,多少钱的? 盟友:2306 王总:哦,现金可以嘛? 盟友:。。。 2,盟友:王总,上路兵线已经为您控到塔下,每个小兵都还剩,请您抽空来用AOE收钱 王总:哦,知道了,小精灵有大吗?带我过去。 3,王总用屠夫 王总(所有人):谁有魔瓶? 对面玩家:王总我有,来我这里我给你 王总:? 对面玩家:我TP CD没法给您送来 王总:哦,出刷新,钱我给报销。 4,王总去对面野区抓人,随后被对面绕视野反杀,王总大怒 王总:你们四个,一人一把补刀斧,给我把近卫的树全砍光 盟友:。。 5,王总龙心人马路过野区,打了一波野,这时下路河道出现一恢复符。 盟友:我 王总:? 盟友:我们四人给王总蹲着 王总:哦。 6,王总走中,对线消耗品用完了,这时只听泉水处传来一声清脆的声音 盟友:王总,已在飞行信使中为您准备好6个魔瓶,请畅饮 王总:哦。 7,王总VS被对面五人抓到 盟友幽鬼:王总换我,换我。 随后UG被秒,王总顺利逃脱 盟友:神级换!。 8,王总冰女打野,眼看最后一丝血要挂了 盟友潮汐:王总小心! 王总:? 潮汐果断跳大清野 盟友潮汐:王总你没事吧? 王总:没。 9,开局 王总:? XXX 购买了 动物信使 XXX 购买了 飞行信使 XXX 购买了岗哨守卫 XXX 购买了岗哨守卫 XXX 购买了 侦查守卫 XXX 购买了 侦查守卫 王总:恩。 10,-AP 王总:控 盟友A 选择了 憾地神牛 盟友B 选择了 潮汐猎人 盟友C 选择了 树精卫士 盟友D 选择了 谜团 王总 选择了 矮人火枪手。 11,近卫上路推塔 王总:冰女顶一下 天灾军团 杀死了 水晶室女 王总;? 盟友VS:我来顶 天灾军团 杀死了 复仇之魂 王总:? 盟友巫医:王总我来 天灾军团 杀死了 巫医 王总 摧毁了一座防御塔。 12,开局 王总:random 王总 随机选择了 水晶室女 王总:? 盟友A:-SWAP 1 盟友B:-SWAP 1 盟友C:-SWAP 1 盟友D:-SWAP 1。 13,王总圣剑掉到了地上,被对面小小捡起 王总(所有人):? 山岭巨人 退出了 游戏 之后又被队友大娜迦捡起 王总(盟友):?
首页 1 2 下一页