题目:https://nanti.jisuanke.com/t/A1256 题意:给定若干个城市,出发点为大连,目的地为西安,但是要求中途必须经过上海,并且图中每个城市只能经过一次,给出m条路(双向道路),走第i条路需要wi代价,求所有满足要求的方案中花费的最小代价,如果没有满足的方案,输出-1。 思路:学到了网络流建图新姿势,如果需要经过中间点,则可以把起点和终点接入源点,中间点接入汇点。相当于求从大连到上海加上西安到上海花费的代价总和最小。所以就是最小费用流,点只可走一次,所以进行拆点,一个入点一个出点,每条路连接至相应的出点到入点,容量为1,花费为0。超级源点与大连、西安建边容量为1,花费为0,上海的入点作为超级汇点。这样就保证了进过中间点上海,如果最大流不为2,则表明没有满足的方案,否则最小费用即ans。 代码: 待补