堆优化的dij为什么不把起点初始为已经访问过了呢qaq?

P4779 【模板】单源最短路径(标准版)

qvq
by Loi_Anina @ 2018-10-14 09:05:41


![]( Candice_ 2018-10-14 09:06 https://cdn.luogu.com.cn/upload/pic/37788.png)
by Candice_ @ 2018-10-14 09:07:17


就只有这里用了vis数组QAQ
by Candice_ @ 2018-10-14 09:09:07


@[Candice_](/space/show?uid=118209) 我的堆优化dij都不用vis数组的(逃
by 曹老师 @ 2018-10-14 09:09:45


@[曹老师](/space/show?uid=37427) 我问的同学们qaq也不加qaq所以我才会发讨论啊啊啊啊啊QAQ 还是谢谢你qwq
by Candice_ @ 2018-10-14 09:10:46


不加vis是假的dij啊, O((n+m)log(n))的
by LPA20020220 @ 2018-10-14 09:15:12


@[曹老师](/space/show?uid=37427)
by LPA20020220 @ 2018-10-14 09:15:27


```cpp void dj() { std::memset(dis, 63, sizeof(dis)); q.push({st, 0}), dis[st] = 0; Pass cur; R int now, i; W (!q.empty()) { cur = q.top(); q.pop(); now = cur.pos; for (i = head[now]; i; i = edge[i].nex) { if(dis[edge[i].to] > dis[now] + edge[i].len) { dis[edge[i].to] = dis[now] + edge[i].len; if(!vis[edge[i].to]) hdle[edge[i].to] = q.push({edge[i].to, dis[edge[i].to]}), vis[edge[i].to] = true; else {q.modify(hdle[edge[i].to], {edge[i].to, dis[now] + edge[i].len});} } } } } ```
by LPA20020220 @ 2018-10-14 09:16:22


@[LPA20020220](/space/show?uid=67492) emm所以为什么不初始 vis[起点] = 1呢QAQ
by Candice_ @ 2018-10-14 09:20:44


@[LPA20020220](/space/show?uid=67492) 哦我明白了QAQ谢谢您qwq
by Candice_ @ 2018-10-14 09:21:28


| 下一页