类似如下代码会炸:
long long ans=0;
for(int j=1;j<=n;j++)
{
if(dis[j]==1000000000)
ans+=1000000000*j;
else
ans+=(dis[j]+d[j]-d[i])*j;
}
因为 109 和 j 均属 int 范围,语句 ans+=1000000000*j; 返回给 ans 的类型也是 int 类型,应将代码改为:
long long ans=0;
for(int j=1;j<=n;j++)
{
if(dis[j]==inf)
ans+=1ll*inf*j;
else
ans+=(dis[j]+d[j]-d[i])*j;
}