dijkstra忘记写vis了,结果发现几乎能过所有最短路的题,还能当spfa用。。。
代码:
void dijkstra(int s)
{
for(int i=1;i<=n;i++)
{
dis[i]=1e9;
}
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> q;
dis[s]=0;
q.push({0,s});
while(!q.empty())
{
auto tmp=q.top();
q.pop();
int jl=tmp.first;
int mini=tmp.second;
for(int i=0;i<edge[mini].size();i++)
{
int v=edge[mini][i].v;
int w=edge[mini][i].w;
if(dis[v]>jl+w)
{
dis[v]=jl+w;
q.push({jl+w,v});
}
}
}
}