ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

qoj1828 TraveLog

qoj1828 TraveLog

题意

给出一个有向带权图。

有一条 \(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\) 显然可以二分查找。

最后满足以上条件的所有边即为最短路上可能的边,直接判断即可。

返回列表