1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
typedef pair<int,int> l; priority_queue<s,vector<s>,greater<s> >q; int (int s,int t){ while(!q.empty())q.pop(); memset(d,0x3f,sizeof(d)); memset(in,0,sizeof(0)); d[s]=0;in[s]=1; q.push(l(0,s)); while(!q.empty()){ int k=q.top().second; q.pop(); in[k]=1; for(int i=head[k];i!=-1;i=e[i].nxt)if(d[k]+e[i].w<d[i]){ d[i]=e[i].w+d[k]; if(!in[e[i].t])q.push(l(d[i],e[i].t)); } } return d[t]!=inf?d[t]:-1; }
|
近期评论