众所周知,这题必须要用堆优化的迪杰斯特拉的堆优化才能过,否则60分(错失一等奖)
我没有得过一等奖但还是要说:
P4779
全过程:
struct node//堆中的比较函数 { int dis; int pos; bool operator < (const node &x)const//在struct内部定义必须加const没有为何 { return x.dis<dis;//返回自己和自己比较的较小值 //自己和自己类型的较小值! //如果在外面的话就要像平常一样定义两个const node &x,然后重载 } }; priority_queue<node> q;//定义一个以node类型的优先队列(堆) /*也就是说,我们定义了一个小根堆, 它包括两个元素,一个为dis(边的大小),另一个为pos,为当前节点,也就是dis[i]中的i 外加一个小根堆排序的条件,按dis大
——————by 长者の手迹
这个很形象了吧