为什么模板题都a的这么艰难
调了这么久发现其实原来的就是对的只是样例可以有不同解,蠢的程度也是没谁了。。。
题意就是求DAG上的最小路径覆盖数,而且使得所有路径权值之和最小,而且要输出路径。将每一个点拆成两个点,分别在二分图左右两侧,读入的所有的路都是从左往右。 求最小路径覆盖也就是求最大匹配,而在这一条件下要求总长度最小,将边附上权值求最小权最大匹配即可。由于KM算法求的是最大权最大匹配,所以要将权值取反,除此之外,由于KM算法相当于每一对之间都有连接,所以要把其他边的权值初始化为-INF。
然后就是输出格式的坑,要把每一条路都找出来,找的过程中判定起点终点不能用link[i],因为KM跑完之后所有的link都不是-1,也就是说需要用边权来判定,然后他还需要记录下每一条路的长度,,真的烦,,,,,
//#include
#include
#include
#include
#include