众所周知,Dijkstra不能处理负边权
对于一个有负边权的有向图,设k为最小的边权,然后将每个边权都加上k,使每个边权都非负。
跑一遍Dijkstra并记录每条最短路由多少条边组成,设为y。
最终对于每个dij都 dij-=k*y 后得到最短路。
dij-=k*y
rt求一组hack。
如果非要看的话,丑陋的代码在这(丑陋至极,实在不推荐看)