- 首先,有时候题目需要得到的不是最值,而是次值。
- 与我们求最值过程类似,我们求最值,若是最值被替换,原来的最值就变成次值,若是次值可以更新就更新。
没有增加多少难度。
例
USACO 2006 Nov Roadblocks
核心代码
for (int j=last[u];j;j=e[j].next)
{
int v=e[j].to;
int k=e[j].v;
if (mind+k<=dist[v][0])
{
dist[v][1]=dist[v][0];
dist[v][0]=mind+k;
}
else if (mind+k<dist[v][1])
{
dist[v][1]=mind+k;
}
这里就体现的开始说的;
另外提的,操作次数要翻一倍,以为我们多了次短路的