传送门
学习来自于:http://www.cnblogs.com/Lubixiaosi-Zhaocao/p/9951711.html
【(Div.2)D.|(Div.2)D. Edge Deletion】题目大意:
一个无向图,各点到点1的最短距离为di,保证满足条件删除m-k条边之后使得到点1的距离仍为di的点数量最多的情况下,输出剩余的k条边的编号(输入顺序即编号)
思路:
因为都是和1的最短距离,是单源最短路,所以应该会用到Dijkstra算法,但是他要输出剩余的k条边,这里可以用一个bfs,贪心从1号开始取和以1号为前驱为最短距离的边,然后再将这条边的另一个节点加入队列。所以在跑Dijkstra时,要保存到点i最短路的前驱father[i], 最后就是在这一颗由最短路构成的树上bfs
//#include
#include
#include
#include
#include
#include
不写这个我都快把最短路给忘了
推荐阅读