priority_queue<pair<int,int>>q;//大根堆-小根堆
memset(d,0x3f,sizeof(d);
memset(v,0,sizeof(v));
d[1]=0;
q.push(make_pair(0,1));
while(q.size())
int x=q.top().second;q.pop();
if(v[x])continue;
v[x]=1;
for(int i=head[x];i;i=Next[i])
int y=ver[i],z=edge[i];
if(d[y]>d[x]+z){
d[y]=d[x]+z;
q.push(make_pair(-d[y],y));
}
}
如上,请问一下:
while(q.size())
if(v[x])continue;
for(int i=head[x];i;i=Next[i])
各是什么意思?还有邻接表的原理是什么?麻烦了!