3.30:

这篇是以前写的,用的还是指针存图,今天又写了个代码,码风稍微好看点。

传送门:http://www.cnblogs.com/Currier/p/6648685.html

---------------------------------------------------一点也不华丽的分割线---------------------------------------------------------

最小费用最大流(洛谷可评测):

 program rrr(input,output);
const
inf=;
type
pointer=^nodetype;
nodetype=record
t,c,w:longint;
next,rev:pointer;
end;
var
a,fre:array[..]of pointer;
p:pointer;
dis,q,frv:array[..]of longint;
v:array[..]of boolean;
n,m,s,t,x,y,c,w,i,sum,f,ans,max:longint;
function min(a,b:longint):longint;
begin
if a<b then exit(a) else exit(b);
end;
procedure ins(x,y,c,w:longint);
begin
new(p);p^.t:=y;p^.c:=c;p^.w:=w;p^.next:=a[x];a[x]:=p;
end;
procedure add(x,y,c,w:longint);
begin
ins(x,y,c,w);ins(y,x,,-w);
a[x]^.rev:=a[y];a[y]^.rev:=a[x];
end;
procedure spfa;
var
h,t:longint;
begin
for i:= to n do dis[i]:=inf;
fillchar(v,sizeof(v),false);
h:=;t:=;q[]:=s;dis[s]:=;v[s]:=true;
while h<>t do
begin
inc(h);if h> then h:=;
p:=a[q[h]];
while p<>nil do
begin
if (p^.c>) and (dis[q[h]]+p^.w<dis[p^.t]) then
begin
dis[p^.t]:=dis[q[h]]+p^.w;
frv[p^.t]:=q[h];fre[p^.t]:=p;
if not v[p^.t] then
begin
inc(t);if t> then t:=;
q[t]:=p^.t;v[p^.t]:=true;
end;
end;
p:=p^.next;
end;
v[q[h]]:=false;
end;
end;
begin
assign(input,'r.in');assign(output,'r.out');reset(input);rewrite(output);
readln(n,m,s,t);
for i:= to m do begin read(x,y,c,w);add(x,y,c,w); end;
ans:=;max:=;
while true do
begin
spfa;
if dis[t]=inf then break;
i:=t;f:=inf;
while i<>s do begin f:=min(f,fre[i]^.c);i:=frv[i]; end;
max:=max+f;
i:=t;sum:=;
while i<>s do begin fre[i]^.c:=fre[i]^.c-f;fre[i]^.rev^.c:=fre[i]^.rev^.c+f;sum:=sum+fre[i]^.w;i:=frv[i]; end;
ans:=ans+sum*f;
end;
write(max,' ',ans);
close(input);close(output);
end.

最小费用流spfa最小费用路算法模板(pascal)的更多相关文章

  1. 图论算法-最小费用最大流模板【EK;Dinic】

    图论算法-最小费用最大流模板[EK;Dinic] EK模板 const int inf=1000000000; int n,m,s,t; struct node{int v,w,c;}; vector ...

  2. 最大流 && 最小费用最大流模板

    模板从  这里   搬运,链接博客还有很多网络流题集题解参考. 最大流模板 ( 可处理重边 ) ; const int INF = 0x3f3f3f3f; struct Edge { int from ...

  3. HDU3376 最小费用最大流 模板2

    Matrix Again Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others)To ...

  4. 洛谷P3381 最小费用最大流模板

    https://www.luogu.org/problem/P3381 题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用 ...

  5. 【Luogu】P3381最小费用最大流模板(SPFA找增广路)

    题目链接 哈  学会最小费用最大流啦 思路是这样. 首先我们有一个贪心策略.如果我们每次找到单位费用和最短的一条增广路,那么显然我们可以把这条路添加到已有的流量里去——不管这条路的流量是多大,反正它能 ...

  6. 【网络流#2】hdu 1533 - 最小费用最大流模板题

    最小费用最大流,即MCMF(Minimum Cost Maximum Flow)问题 嗯~第一次写费用流题... 这道就是费用流的模板题,找不到更裸的题了 建图:每个m(Man)作为源点,每个H(Ho ...

  7. 最小费用最大流模板 poj 2159 模板水题

    Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15944   Accepted: 8167 Descr ...

  8. poj 2195 最小费用最大流模板

    /*Source Code Problem: 2195 User: HEU_daoguang Memory: 1172K Time: 94MS Language: G++ Result: Accept ...

  9. luogu 3376 最小费用最大流 模板

    类似EK算法,只是将bfs改成spfa,求最小花费. 为什么可以呢,加入1-3-7是一条路,求出一个流量为40,那么40*f[1]+40*f[2]+40*f[3],f[1]是第一条路的单位费用,f[2 ...

随机推荐

  1. 20155325 实验三 敏捷开发与XP实践

    实验三 敏捷开发与XP实践-1 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 在IDEA中使用工具(Code-> ...

  2. 20145234黄斐《java程序设计基础》第一周

    教材学习内容总结 1.java是SUN公司推出的面相网络的编程语言,当时取名Oak,后改名Java. 2.Java三大平台分别为:Java SE.Java EE与Java ME. 3.Java不仅是程 ...

  3. c++ 创建单项链表

    建立单向链表 头指针Head 插入结点 //建立头结点 Head Head=p= malloc(sizeof( struct stu_data)); // memset(stu,,sizeof( st ...

  4. 【洛谷P2245】星际导航

    题面 题解 \(kruskal\)重构树板子题??(大雾 因为重构树上两点之间的\(LCA\)的权值就是原图上最小生成树上的瓶颈. 所以建个重构树,跑\(LCA\)即可. 代码 #include< ...

  5. 【洛谷P2252】取石子游戏

    题面 题解 威佐夫博弈 代码 #include<cstdio> #include<algorithm> #include<cmath> #define RG reg ...

  6. LOJ #2585. 「APIO2018」新家

    #2585. 「APIO2018」新家 https://loj.ac/problem/2585 分析: 线段树+二分. 首先看怎样数颜色,正常的时候,离线扫一遍右端点,每次只记录最右边的点,然后查询左 ...

  7. STM32L431仿真卡在HAL_InitTick(TICK_INT_PRIORITY);

    1. 使用IAR 8.20版本,STM32L431RBT芯片,JLINK V9仿真器,实际仿真测试的时候卡在如下的函数 /* Use SysTick as time base source and c ...

  8. axios封装(一)基础配置

    axios 是目前流行的Promise网络请求库,在浏览器端他通过 xhr方式创建ajax请求.在node环境下,通过 http 库创建网络请求. axios 提供了丰富的配置,这里讲一讲我在工作中通 ...

  9. Debian 9 + Windows 10 双系统安装体验

    很久之前就想在自己的电脑上也装个 Debian 玩玩了,最近正好有时间折腾,就踩了踩坑在笔记本上装了玩玩~ UEFI + GPT 解决启动相关的麻烦配置 如果在支持 UEFI 的电脑上安装 Debia ...

  10. LeetCode--147.对链表进行插入排序

    题目描述: 插入排序的动画演示如上.从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示). 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中. 插入排序算法 ...