n个点的无向带权图,求1->n的最短往返路径,不走重复边。
这里涉及到一个知识点:求无向图上s->t的最短路,其实就是费用流。
而求1->n最短往返路径呢?增加源点s,由s到1加弧,容量为2(往返两次),费用为0;而对于原图中的边,分别由u到v,由v到u增加容量为1(往返不能走重边),费用为边权的弧。然后跑费用流得到的最小费用便是答案。如果最后求得的最大流小于2,则说明无解。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include