如果你考虑了清空还是没过第九个点的话,可能是SPFA里面判断出错了。
for(auto v : G[fro]){
if(vis[v.second] || dis[v.second] <= dis[fro] + v.first) continue;
vis[v.second] = 1;q.push(v.second);
dis[v.second] = dis[fro] + v.first;
times[v.second] ++;
if(times[v.second] > n) return true;
}
错误判断
for(auto v : G[fro]){
if(dis[v.second] > dis[fro] + v.first){
dis[v.second] = dis[fro] + v.first;
if(!vis[v.second]){
vis[v.second] = 1;q.push(v.second);
times[v.second] ++;
if(times[v.second] > n) return true;
}
}
}
正确判断