题目大意:给你n个点(n <= 1000)和m条边(m <= 10000),现在从点1出发经过一些边后到点n,然后再经过一些边回到点1,每一条边只能走一次,每条边花费的时间不同。求最小路径。
解题思路:最小费用最大流。加一个源点S和一个汇点T,源点S与点1连一条容量为2费用为0点边,点n与汇点T也连一条容量为2费用为0的边,对于题目给定的那些边。每条边的容量为1,费用为每条边花费的时间。注意这是双向边。然后求最小费用。
需要注意的地方:
一、由于具有不同费用的平行边,所以,必须使用邻接表来存,而不能使用邻接矩阵
二、图是双向的,因为此题是无向图,所以建边的时候如果建两条费用都是正的边的话,退流时无法修正费用
所以应该建4条边:
第一对:
a->b cost 1
b->a -cost 0
第二对:
b->a cost 1
a->b -cost 0