题意
给出一个有向带权图。
有一条 \(1\to n\) 的最短路。给出 \(1\) 到这条最短路上某些点的最短路长度,询问这条最短路是否无解,唯一解,多解,并输出唯一解的方案。
\(n\le 2\times 10^5,m\le 3\times 10^5\)。
思路
首先跑一遍 dij 求出 \(1\to i\) 的最短路长度,记为 \(d_i\)。
对于一条边 \((u,v,w)\),如果 \(d_u+w\neq d_v\),则说明这条边不是某条最短路的边。
剩下的边即为所有可能在最短路上的边。
接着对于一条最短路上的边 \((u,v,w)\),如果对于给出的某个最短路长度 \(l\) 有 \(d_u<l<d_v\),则这条边也不可能是最短路上的边,因为在 \(u\) 前面的点 \(u'\) 都有 \(d_{u'}<l\),\(v\) 后面的点都有 \(d_{v'}>l\),即不存在一个点 \(x\) 满足 \(d_x=l\)。\(l\) 显然可以二分查找。
最后满足以上条件的所有边即为最短路上可能的边,直接判断即可。