萌新巨大的疑惑
查看原帖
萌新巨大的疑惑
120017
JeffZhao楼主2021/7/17 20:53
inline void spfa(int s) {
	for (int i = 0; i <= n; ++i) {
		dis[i] = (1ll << 50), vis[i] = false, cnt[i] = 0;
	}

	dis[s] = 0, vis[s] = true, d.push(s);

	while (d.size()) {

		int u = d.front(); d.pop(); vis[u] = false;

		for (int i = head[u]; ~i; i = nx[i]) {
			int v = ver[i], Len = w[i];

			if (dis[u] + Len < dis[v]) {
				dis[v] = dis[u] + Len;

				cnt[v] = cnt[u] + 1;

				if (cnt[v] > n + 1) {
					flag = false;
					return;
				}

				if (vis[v] == 0) {
					d.push(v);
					vis[v] = true;
				}
			}
		}
	}

	return;
}

这里的

cnt[u] = cnt[v] + 1

为什么不能写成

++cnt[v]
2021/7/17 20:53
加载中...