网络最大流
Edmonds-karp算法

1. 最大流最小割定理介绍:把一个流网络的顶点集划分成两个集合S和T,使得源点s ∈S且汇点t ∈T,割(S,T)的容量C(S,T) =∑Cuv, 其中u∈S且v∈T。
从直观上看,截集(S,T)是从源点s到汇点t的必经之路,如果该路堵塞则流从s无法到达t。
于是我们可以得到下面的定理:最大流最小割定理:任意一个流网络的最大流量等于该网络的最小的割的容量。
这个定理的证明这里就不给出了,可以参考图论方面的资料。
2. 求最大流的Edmonds-Karp算法简介:若给定一个可行流F=(Fij),我们把网络中使Fij=Cij的弧称为饱和弧,Fij<Cij的弧称为未饱和弧。
如果流网络中从i到j没有弧,我们添加一条从i到j且容量Cij=0的弧,这样整个流网络变成一个完全图。
如果从i到j有流量Fij,则从j到i的流量定义为Fji = -Fij 。
考虑一条从源点s出发到汇点t的路径p,如果对于每一段弧(i,j)属于p都有Fij < Cij,即每一条属于p的弧都是未饱和弧,则我们可以向这条路径上压入更多的流,使得其中的一条弧达到饱和。
这样的路径p叫做可改进路,可压入的流量叫做该可改进路的可改进流量。
重复这个过程,直到整个网络找不到一条可改进路,显然这时候网络的流量达到最大。
Edmonds-Karp算法就是利用宽度优先不断地找一条从s到t的可改进路,然后改进流量,一直到找不到可改进路为止。
由于用宽度优先,每次找到的可改进路是最短的可改进路,通过分析可以知道其复杂度为O(VE2)。
Edmonds-Karp算法的伪代码如下:设队列Q--存储当前未检查的标号点,队首节点出队后,成为已检查的标点;path -- 存储当前已标号可改进路经;repeatpath置空;源点s标号并进入path和Q;while Q非空and 汇点t未标号dobegin移出Q的队首顶点u;for 每一条从u出发的弧(u,v) doif v未标号and 弧(u,v)的流量可改进then v进入队列Q和path;end whileif 汇点已标号then 从汇点出发沿着path修正可改进路的流量;until 汇点未标号;Edmonds-Karp算法有一个很重要的性质:当汇点未标号而导致算法结束的时候,那些已经标号的节点构成集合S,未标号的节点构成集合T,割(S,T)恰好是该流网络的最小割;且这样求出的最小割(S,T)中集合S的元素数目一定是最少的。
最大流在信息学竞赛中应用的一个模型--江涛

最大流在信息学竞赛中应用的一个模型江涛关键字:网络可行流最大流附加网络无源汇必要弧流的分离有上下界的最大流建模引言:最大流类的模型在当今信息学比赛中有相当广泛的应用。
但在教学中,发现很多同学对流模型的原理和变形并不掌握,只是记下经典的算法和题目,以便比赛中套用。
这当然有很大的局限性,也不是学习之正道。
本讲想通过对最大流模型,特别是附加网络的一些分析、讨论,达到抛砖引玉目的。
一、网络与流的概念一个实例:运输网络图1.1网络定义:●一个有向图G=(V,E);●有两个特别的点:源点s、汇点t;●图中每条边(u,v)∈E,有一个非负值的容量C(u,v)记为G=(V,E,C)网络三要素:点、边、容量可行流定义:是网络G上的一个“流”,即每条边上有个“流量”P(u,v),要满足下面两个条件:流的容量限制---弧:),(),(0vuCvuP≤≤对任意弧(u,v)---有向边流的平衡---点:除源点和汇点,对任意中间点有:流入u的“流量”与流出u的“流量”相等。
即:},{t sVu-∈∀有∑∑∈∈=-VxVxx u PuxP0),(),(网络的流量:源点的净流出“流量” 或 汇点的净流入“流量”。
即:∑∑∑∑∈∈∈∈-=-Vx Vx Vx Vx x t P t x P s x P x s P ),(),(),(),(注意,我们这里说的流量是一种速率,而不是指总量。
联系上面所说的实例,下面是一个流量为1的可行流:图1.2标准图示法:图1.3例1.1有一个n*m的国际棋盘,上面有一些格子被挖掉,即不能放棋子,现求最多能放多少个棋子“车”,并保证它们不互相攻击(即:不在同一行,也不在同一列)?分析:1)行、列限制---最多只能一个车控制;2)车对行、列的影响---一个车控制一个行和边;例子:图1.4图1.5显然,我们要求车最多,也就是求流量最大---最大流问题。
下面是一个解:图1.6即(1,3)、(2,1)、(3,2)格上各放一个车,可得到一个最优方案。
最大流问题(数学建模资料)

一般可以把L 0的流网络转化为L=0的流网络进行研究(思考?)
除非特别说明, 以后我们总是假设L=0,网络简记为N=(V,A,U,D).
4
网络中的流
例 - 运输网络和运输计划
有一批货物从货源地运往目的地,假设货源集合为S,目的地集 合为T. 货源i可提供的货物数量为ai个单位,目的地j对货物的需 求量为bj个单位.
xij 0,
(i, j ) A \ P
则称x为路流(Path flow),v称为该路流的流值(流量). v=0时,称该路 流为零路流,否则称为非零路流. 如果N中存在一个有向圈W,使得
0 v xij u ij , (i, j ) W ,
xij 0,
(i, j ) A \ W
(a)找到一条从一个源点i0指向一个汇点ik的有向路P. 定义
v( P) min d i0 ,d ik , min xij | (i, j ) P
d i0 d i0 v( P ), d ik d ik v( P ), xij xij v( P ), (i, j ) P.
max s.t.
v, xij x ji v, A j:( j ,i )A j:( i , j ) 0,
v
i s, i t, i s, t ,
0 xij u ij ,
(i, j ) A
定理6.2 (整流定理) 最大流问题所对应的约束矩阵是全么模 矩阵. 若所有弧容量均为正整数,则问题存在最优整数解.
11
6.1.3 增广路定理
定义6.5 设[S,T]是网络N=(s,t,V,A,U)中给定的一个割,且sS, t T ,则称割[S,T]为s-t割. s-t割[S,T]中的弧(i,j)(iS,jT) 称为割的前向弧,弧(i, j)(jS,iT)称为割的反向弧. s-t割[S,T] 的容量定义为前向弧的容量之和,记为 U ( S , T ) uij 一个网络中容量最小的s-t割称为最小割.
5-4 最 大 流 问题

(2)标号过程 标号过程
给起点v 标上标号( , 1给起点 s标上标号(-,+∞); ); (表示 s是源点(起点),能够得到任意多的量。 表示v 是源点(起点),能够得到任意多的量。 ),能够得到任意多的量 表示 vs称为已标记的点。让S表示已标记点的集合 S 表示 称为已标记的点。 表示已标记点的集合, 表示已标记点的集合 未标记点的集合, 未标记点的集合 VS ∈ S ) 2考察起点的所有相邻未标号点: 考察起点的所有相邻未标号 所有相邻未标号点 若存在以S中的点为起点, 若存在以 中的点为起点,以 S 中的点为终点的非饱 中的点为起点 [vi+ , ε j ] ,否则不加标记。 和弧( 否则不加标记。 和弧(vi,vj)则vj可标记为
从S出发到 S 终止的所有边的集合即割集。 终止的所有边的集合即割集。
v2
e1
e3 e6
v4
e8
v1
e2
e4 e7
v6
e5
v3
v5
e9
不包括从 S 出发到S终 止的边!
4、弧的分类
(1)在可行流X={xij}中,按流量的特征 在可行流X 分有: 分有: ①饱和弧——xij=bij 饱和弧 ②非饱和弧——xij<bij 非饱和弧 ③零流弧——xij=0 零流弧 ④非零流弧——xij>0 非零流弧
顶点3的标记化 顶点 的标记化: 的标记化 ∵ x s 3 = bs 3 , 但
正向饱和 弧 ∴不能从v 不能从
得到标记; 标记 s得到标记;
x
32
得到标记 标记。 > 0,故可从v2得到标记。
反向非零流
于是
ε ε3 = min { 2 , x 32 } = min {6 , 4 } = 4
《运筹学》胡运权清华版-8-04最大流

在城市交通规划中,最大流问题可以用于解决道路流量分配问题, 优化交通流以减少拥堵和提高通行效率。
电力网络
在电力网络中,最大流问题可以用于确定电力的最优传输方案,以 满足不同地区的需求并降低传输损耗。
05
总与展望
最大流问题的重要性和意义
实际应用
最大流问题在现实世界中具有广 泛的应用,如物流网络、交通调 度和电力传输等领域,解决最大 流问题有助于提高这些系统的效 率和可靠性。
03
最大流问题的求解算法分 析
Ford-Fulkerson算法的时间复杂度分析
算法时间复杂度
Ford-Fulkerson算法的时间复杂度为O(VE^2),其中V是顶点的数量,E是边 的数量。
原因分析
该算法通过不断寻找增广路径并更新残量值来求解最大流,每次找到增广路径 都需要遍历所有边,而增广路径的数量最多为E,因此总的时间复杂度为 O(VE^2)。
THANKS
感谢观看
流量
在有向图中,每条边都有一个非 负数表示其流量,表示该边实际 传递的流量。
增广路径与Ford-Fulkerson算法
增广路径
在有向图中,从源点出发,经过若干条边和顶点,最后回到源点的路径。
Ford-Fulkerson算法
通过不断寻找增广路径并更新流量值,最终找到最大流的算法。
预流推进算法(Push-Relabel)
理论价值
最大流问题作为运筹学中的经典 问题,具有重要的理论价值,其 研究有助于推动运筹学和组合优 化理论的深入发展。
挑战性
最大流问题是一个NP难问题,具 有很高的计算复杂度,解决该问 题需要设计高效的算法和优化技 术,具有很大的挑战性。
未来研究方向和展望
一类有损耗网络最大流问题的模型与算法

维普资讯
第 1 期
颉 拣栋 等 : 类 有 损 耗 网 络 最 大 流 问 题 的 模 型 与 算 法 一
点 的流 出量 , 表 示 弧 (,)上进 入 点 的 流 量 ,
同的渗 透 , 同 的气 候将 造成 不 同的蒸发 . 不 此类 流称 为有损 耗流 , 由其 所形 成 的 网络 最 大 流 问题 就 是有
损耗 网络最 大流 问题.
D 表示弧 (,) 流 的最大 消耗量 , 表示 弧 (,) 上 d
esn 标 号法 l很 好 的解决 了. 损 耗 的 网络 , ro 用 _ 5 ] 有 流 经过发点 发 出后 , 到 达 收 点 之 前 , 可 能 损 耗 殆 在 有收稿Biblioteka 日期 :0 60—8 2 0 —41
作者 简 介 : 颉栋 栋 (9 6) 男 , 17 一, 甘肃 天水 人 , 师 讲
上 流 的已经 消耗量. 如果 弧 (,) 有流 通过 , 上 显然 ,
d 一 一 ≤ D , 则 , 一 0 中间 点 的流量损 否 d . 耗定 义 为 0 .
定义 2 可行 流 :
此 类 问题 国 内很 少 有人 研 究 , 国外则 一 般 将其 与模糊 理论结 合起 来 , 究 的过程 及其 成果 主要有 : 研 模糊 图的定 义[ 模 糊 图一般 问题 的优化 方 法_ 、 、 2 模 ] 糊 图上 流 的定 义_ 、 糊运 输 网络 相关 参 数 的定 义 3模 ] 及求 解算 法 [等 . 于 模糊 理 论 解决 此 类 问题 的 片 4 鉴 ]
( ,) ∈A
的容 量确定 , 发点 以初始 输入 量 , 给 流发 出经过 每一
弧后 , 成 一定 的损 耗 , 最 大 损 耗值 确 定 , 形 而 流经 过 节 点无损 耗 , 收点 的最 大输 入 量. 求 此期 间 , 各弧 流 的最大损 耗最 多只 能进行 一次 . 总 流量 守 恒 的 网络 的最 大 流 问题 , od F l- F r , uk
运筹学-图与网络模型以及最小费用最大流(高级课堂)
v4
v5
高等课堂 7
图与网络的基本概念与模型
环, 多重边, 简单图
e1
如果边e的两个端点相重,称该边为 环。如右图中边e1为环。如果两个点 v2
e2
e4 v1e3
v3
之间多于一条,称为多重边,如右图
e5
中的e4和e5,对无环、无多重边的图
e6
e7
e8
称作简单图。
v4
v5
高等课堂 8
图与网络的基本概念与模型
的长度(单位:公里)。
17
v2
5
6
15
6 v4
V1
(甲地)
43
10
4
4
2
v5
v6
解:这是一个求v3无向图的最短路的问题。可以把无向图的每一边
(vi,vj)都用方向相反的两条弧(vi,vj)和(vj,vi)代替,就化为有向图,
即可用Dijkstra算法来求解。也可直接在无向图中用Dijkstra算法来求解。
最短路问题
最短路问题:对一个赋权的有向图D中的指定的两个点Vs和Vt找 到一条从 Vs 到 Vt 的路,使得这条路上所有弧的权数的总和最小, 这条路被称之为从Vs到Vt的最短路。这条路上所有弧的权数的总 和被称为从Vs到Vt的距离。
• 求最短路有两种算法:
狄克斯屈拉(Dijkstra)(双标号)算法 逐次逼近算法
• 图论中图是由点和边构成,可以反映一些对象之间的关系。 • 一般情况下图中点的相对位置如何、点与点之间联线的长短曲
直,对于反映对象之间的关系并不是重要的。
图的定义(P230)
若用点表示研究的对象,用边表示这些对象之间的联系,则图 G可以定义为点和边的集合,记作:
有上下界网络最大流与最小截问题
( .D p r n o 1 eat tfMahm ts N nh n nvrt, ac a g3 0 3 , hn ; .I tueo Ss me te ai , a cag U i sy N nh n 3 0 1 C i 2 n i t f y— c ei a st
t n ier g N nh n n e i , a cag3 0 3 , hn ) e E gne n , a ca g U i r t N nh n 3 0 C ia n r i v sy 1
Ab ta t F rc n e in e t ul e iin s p o y tm e aie t h r b e o xmu f w & mi mu s r c : o o v ne c o b i d c so u p r s se r ltv o te p o lm fma i m o d t l ni m
Pr be o xmu F o & Mi i u Cu to o l m fMa i m lw nm m tSe f Ne wo k wi o r& Up e c Ca a ie t r t L we h p rAr p ct s i
XI a .o g E F n r n ,J A n. n I Re a
关 键 词 : 筹 学 ; 策 支持 系统 ; 运 决 数值 实验 ; 上 下 界 网络 ; 大 流 ; 小 截 ; 小 饱 和 流 有 最 最 最
中 图 分 类 号 : 95 2 4 N 4 ;0 2
文章 标 识 码 : A
文 章 编 号 :0732 (08 0 .0 4 0 10 .o e wh l e sb e s l t n e it ,a d h sg o e om a c n t e s n e o en mpe ne n in t h r blm iea fa il ou i x ss n a o d p r r n e i h e s fb i g i lme td o o f
一类流量增减最大值可预见的不确定网络最大流的模型与算法
—
的最大量为定值 , 流的最大增加和减少最多 只能进 行一次 , 给发点 以一定的初始流量 , 求收点的流量最
大值 .
1 定义与模型
在有 向 图 D 一 ( A)中 , 表 示 发 点 , 表 示 ,
≤ , > d ≤ d — ddd d , > d
一
收点 , 其余为中间点. 对于每个弧( ) A, , ∈ 对应 有 C ≥ 0称为弧的容量 , 表示弧 ( ) 由i d , , 上 点 的流出量 , 表 示弧 ( ) 进入 .点 的流量. , 上
0≤ 一 , > d d
d —d ≤ C 一 , < d d
一
一
d —d d < d ,
() , 称为可行流的发端输入量, , 称 为可行流 ∥( )
的收端输入量. 0 d 表示弧上流的还需要减 少量 , dd
表 示 弧上 流 的增加量 . 网络 中不 允许 出现 负 流量 , 即
收 稿 日期 :0 70— 1 2 0 —32
一 ld , o— d ≥ 0 ≥ 0 (i )∈ A , ,v ,
( 兰州交通 大学 交通运输学院 , 甘肃 兰州 7 0 7 ) 3 0 0
摘
要: 不确定 网络最 大流 问题是现 实中普遍存在 的一种 网络 流 问题 , 针对 该 问题 中的流在传输 过程 中增减 并存
的特征 给 出了一种模 型及 算法. 将其 网络上增加 弧上 的增加量作 为初 始输入 量之 一, 经过 特定运 算将其 转化 为只 损耗 网络 , 用有损耗 网络最 大流 问题 的算 法进行 最终求解. 运 最后 , 通过 实例 验证 了其正确性.
Vo. 6No 4 12 .
运筹学第六章图与网络分析
S
2
4
7
2 A
0 5
S
5 45 B
98
14
5
13
D
T
C
E
4
4
4
7
最短路线:S AB E D T
最短距离:Lmin=13
2.求任意两点间最短距离的矩阵算法
⑴ 构造任意两点间直接到达的最短距离矩阵D(0)= dij(0)
S A B D(0)= C D E T
SABCDET 0 25 4 2 02 7 5 20 1 5 3 4 1 0 4 75 0 15 3 41 0 7 5 7 0
e1 v1
e5
v0 e2
e3
v2
e4
e6 e7
v3
v4
(4)简单图:无环、无多重边的图称为简单图。
(5)链:点和边的交替序列,其中点可重复,但边不能 重复。
(6)路:点和边的交替序列,但点和边均不能重复。
(7)圈:始点和终点重合的链。
(8)回路:始点和终点重合的路。
(9)连通图:若一个图中,任意两点之间至少存在一条 链,称这样的图为连通图。 (10)子图,部分图:设图G1={V1,E1}, G2={V2,E2}, 如果有V1V2,E1E2,则称G1是G2的一个子图;若 V1=V2,E1E2,则称G1是G2的一个部分图。 (11)次:某点的关联边的个数称为该点的次,以d(vi)表示。
步骤:
1. 两两连接所有的奇点,使之均成为偶点;
2. 检查重复走的路线长度,是否不超过其所在 回路总长的一半,若超过,则调整连线,改 走另一半。
v1
4
v4
4
1
4
v2
v5
5
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
云南大学数学与统计学实验教学中心实验报告 第 1 页 共 10 页 云南大学数学与统计学实验教学中心 实 验 报 告 课程名称:运筹学实验 学期:2012~2013学年第二学期 成绩: 指导教师:葛瑜 学生姓名:卢富毓 学生学号:20101910072 实验名称:最大流 实验要求: 必做 实验学时:2学时 实验编号:07 实验日期: 2013/4/30 完成日期:2013/5/24 学院: 数学与统计学院 专业 : 信息与计算科学 年级: 2010级
一、实验目的 编制程序,在赋权图中找到从发点Vs到收点Vt的最大流,并输出最大流. 二、实验环境 VS2010(C++) 三、实验内容 P272 例14: 用标号法求图10-25所示网络的最大流,弧旁的数是ijijfc,
四、实验过程 A、将上面算法编写实现运行结果如下图: 用标号法寻找网络中最大流的基本思想是寻找可增广链,使网络的流量得以增加,直到最大为止(标号过程进行不下去,而收点vt尚未标号,说明不存在增广路,得到最大流)。我采用的方法是从零流开始,再用标号法寻求最大流。 标号法主要分为两个步骤: (1) 标号过程 开始标号,初始化结点的结构体数组,然后标记vs为标号点并进行检查,此时其余都是未标号的点。然后找到与vs有边相连的结点,标记那些点为标号而未检查的点。取一个标号而未检查(Tag=marking)的点vi,对于一切未标号(Tag=n_mark)的点vj: A).对于弧(vi,vj),若fij点。
B).对于弧(vi,vj),若fji>0,则给vj标号(-vi,0),vj点成为标号而未检查的点。 然后找到下一个标号而未检查的点,重复上述步骤,一旦vt被标上号,表明得云南大学数学与统计学实验教学中心实验报告 第 2 页 共 10 页 到一条从vi到vt的增广路径p,转入调整过程。 若所有标号都已检查过去,而标号过程进行不下去时,则算法结束,这时的可行流就是最大流。
(2) 调整过程 从vt点开始,通过每个点的第一个标号,反向追踪(根据结点的From信息),可找出增广路P。直到vs为止。这时整个增广路径就找到了。在上述找增广路径的同时计算调整值 : min{min(cij-fij),min(fij)}
a、初始化结果:
输入的结果为红色字体 b、初始化后的到结果:
红框中得到的图的关系与课本例题中的一样!所以创建图形正确! c、最后得到的结果: 云南大学数学与统计学实验教学中心实验报告
第 3 页 共 10 页 6x6的矩阵中,每一行中紫色表示的是有边相连的顶点。 其中的两个值,第一个代表的是容量,第二个值代表的是流量。 得到的结果与课本中例题的结果一致。所以编写的程序正确。 五、实验总结 通过编程来实现的时候,发现手工做的话容易实现,同时在手工做的时候容易忽略一些细节性的东西。而通过编程来实现的话需要把一些忽略的细节重视起来。 同时有了前面两个实验的铺垫,这个实验实现起来也是得心应手的。
六、源代码 源代码如下: //图的顶点结构如下: //----------------------------------- //|vex |formerNode |flowsDiff |mark | //----------------------------------- //图的边的结构如下: //---------------- //|weight |flows | //----------------
#include #include #include
using namespace std; #define Max_vex 100 #define M 1000 //SetTextC1是原来的颜色 //SetTextC2 是设置的输出输入颜色 #define SetTextC1 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN |FOREGROUND_BLUE) 云南大学数学与统计学实验教学中心实验报告 第 4 页 共 10 页 #define SetTextC2 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN) #define SetTextC3 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE) #define SetTextC4 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED) #define SetTextC5 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE) #define SetTextC6 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_GREEN |FOREGROUND_BLUE) #define SetTextC7 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN)
class Arcll{ //边上值 public: double weight; //容量 double flows; //流量 };
enum Mark{n_mark, marking, h_marked};//分别代表没有标记,已经标记_未检查,已经标记_检查 class Vex{ //顶点值 public: string vexs;//顶点名称 string formerVex; double flowsDiff;//流量的差值且最小 Mark mark; };
class Graphics{ //创建一个图的类 private: int vexnum; //顶点数 int arcnum; //边数 Vex vexs[Max_vex]; //存储定点名称 Arcll arcs[Max_vex][Max_vex]; //边数
public: void CreateGraphics(Graphics &G);//创建一个图 int LocateIndex(Graphics G, string v); // 寻找下标
void Mark_getMaxstream(Graphics &G); bool Mark_FindMaxstream(Graphics &G);//标号法寻找最大流 bool Mark_Node(Graphics &G,int i); // 标记的方法 int CheckMarkNode(Graphics &G,int i); };
//方法实现 //找到相应顶点的下标 int Graphics::LocateIndex(Graphics G, string v){ int i=0; for(i=0; iif(G.vexs[i].vexs.compare(v) == 0){ return i; 云南大学数学与统计学实验教学中心实验报告 第 5 页 共 10 页 } }
return -1; }
//创建一个有向图 void Graphics::CreateGraphics(Graphics &G){ int i,j,k; string Vi,Vj; double w, f; //容量、流量
SetTextC1; cout<<"-------------------------创建有向图的存储-------------------------------"
cout<<"请输入顶点名:"; SetTextC4; for(i=0; icin>>G.vexs[i].vexs; G.vexs[i].formerVex = ""; G.vexs[i].mark = n_mark; } SetTextC1;
for(i=0; ifor(j=0; jG.arcs[i][j].weight = M; G.arcs[i][j].flows = -1;
} }
for(k=0; kcout<<"请输入第"
i = LocateIndex(G,Vi); j = LocateIndex(G,Vj);
if(i == -1 || j == -1){ cout<<"输入错误!请检查..." G.arcs[i][j].weight = w; G.arcs[i][j].flows = f;