警钟敲烂#9(如果你考虑了清空)
查看原帖
警钟敲烂#9(如果你考虑了清空)
492030
CityFish楼主2023/9/27 19:57

如果你考虑了清空还是没过第九个点的话,可能是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;
   			}
   		}
   	}

正确判断

2023/9/27 19:57
加载中...