1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| int dis[],vis[]; void spfa(){ queue<int> q; for(int i=1;i<=n;i++) { dis[i]=maxx; vis[i]=0; } q.push(s); dis[s]=0; vis[s]=1; while(!q.empty()){ int u=q.front(); q.pop(); vis[u]=0; for(int i=head[u]; i; i=edge[i].next){ int v=edge[i].to; if(dis[v]>dis[u]+edge[i].dis){ dis[v]=dis[u]+edge[i].dis; if(vis[v]==0){ vis[v]=1; q.push(v); } } } } }
|