(模板)dijkstra
树下
2018-11-07 14:50:54
```cpp
#define ll long long
#define P pair<ll,int>
priority_queue< P,vector<P>,greater<P> > q;
inline void dij(int s){
fill(dis,dis+1+n,maxx);
dis[s]=0;
q.push(make_pair(dis[s],s));
while(!q.empty()){
P p=q.top();
int u=p.second;
q.pop();
if(dis[u]<p.first)
continue;
for(register int i=head[u];i;i=edge[i].next){
int v=edge[i].to;
ll tmp=dis[u]+edge[i].w;
if(dis[v]>tmp){
dis[v]=tmp;
q.push(make_pair(dis[v],v));
}
}
}
}
```