(模板)SPFA

树下

2018-08-27 15:48:05

Personal

``` void spfa(int s){ 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].w){ dis[v]=dis[u]+edge[i].w; if(vis[v]==0){ vis[v]=1; q.push(v); } } } } } ```