-
为什么不加 vis 会错。
-
为什么这样判断 vis 也会 错:
while(!q.empty())
{
int u=q.top().second;q.pop();
vis[u]=1;
for(int i=h[u];~i;i=ne[i])
{
int v=e[i];
if(dis[v]>dis[u]+w[i])
{
dis[v]=dis[u]+w[i],cnt[v]=cnt[u];
if(!vis[v]) q.push(make_pair(dis[v],v));
}
else if(dis[v]==dis[u]+w[i]) cnt[v]+=cnt[u];
}
}
感觉可能都是重复更新的问题,但仔细想想又好像找不到反例,求大佬解答,嘤嘤嘤 qwq。