警示后人
查看原帖
警示后人
798144
SukiYuri楼主2024/9/25 00:12

如果你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,i) 可能由 dis(0,start)dis(0,start) 经过一条负权边转移而来,导致二者的差为负数,从而使原本应为 10910^{9} 的数据被统计错误。

应该没有人犯这种仁济错误罢(逃

2024/9/25 00:12
加载中...