dij堆优
priority_queue<pair<long long,int>,vector<pair<long long,int> >,greater<pair<long long,int> > > q;
void dij()
{
memset(dis,9,sizeof(dis));
dis[s]=0;
q.push(make_pair(0,s));
while(!q.empty())
{
x=q.top().second;
q.pop();
if(u[x]) continue;
u[x]=1;
for(int i=h[x];i;i=d[i].n)
{
if(u[d[i].b]) continue;
if(dis[x]+d[i].c<dis[d[i].b])
{
dis[d[i].b]=dis[x]+d[i].c;
q.push(make_pair(dis[d[i].b],d[i].b));
}
}
}
}

浙公网安备 33010602011771号