跑了个乱七八糟的 SPFA,有 70。
答案 −k,另外 25。
−1,另外 5。
void solve2(){
for(int i=1;i<=n;i++)ans[i]=1e9;
ans[1]=k;
for(int i=0;i<v[1].size();i++){
ans[v[1][i].to]=1+max(k,(v[1][i].lmt+k-1)/k*k);
q.push(v[1][i].to);
}
while(!q.empty()){
int x=q.front();
q.pop();
vis[x]=0;
for(int i=0;i<v[x].size();i++){
int to=v[x][i].to,lmt=v[x][i].lmt;
int nans;
if(lmt<=ans[x]){
nans=ans[x];
}
else{
nans=lmt+(lmt-ans[x])%2;
}
++nans;
if(ans[to]>nans){
ans[to]=nans;
if(!vis[to]){
q.push(to);
vis[to]=1;
}
}
}
}
int nans=(ans[n]+k-1)/k*k;
printf("%d",nans);
}