Dijkstra heap optimization template

 1 priority_queue< pair<ll,ll> >q;
 2 void SPFA(ll top)
 3 {
 4     memset(bian,0,sizeof(bian));
 5     dis[top]=0;q.push(make_pair(0,top));bian[top]=1;
 6     while(!q.empty())
 7     {
 8        ll x=q.top().second;q.pop();
 9        for(ll i=head[x];i;i=e[i].n)
10        {
11            ll to=e[i].to;
12            if(dis[to]>dis[x]+e[i].w)
13            {
14                dis[to]=dis[x]+e[i].w;
15                if(bian[to]==0)
16                {
17                   q.push(make_pair(-dis[to],to));
18                   bian[to]=1;
19                }
20            }
21        }
22     }
23 }

 

Guess you like

Origin www.cnblogs.com/Wwb123/p/11221106.html