如果你WA60pts,请将代码中的
result += 1LL * i * std::min(inf , dis[i] - dis0[start] + dis0[i]);
改成
if(dis[i] == inf)
result += 1LL * i * inf;
else result += 1LL * i * (dis[i] - dis0[start] + dis0[i]);
因为 dis(0,i) 可能由 dis(0,start) 经过一条负权边转移而来,导致二者的差为负数,从而使原本应为 109 的数据被统计错误。
应该没有人犯这种仁济错误罢(逃