int ans[maxn]; bool vis[maxn]; queue<int>q; void spfa(int f){ memset(ans,63,sizeof(ans)); ans[f]=0; vis[f]=true; while(!q.empty()) q.pop(); q.push(f); while(!q.empty()){ int u=q.front(); q.pop(); for (int i=adj[u];i;i=bian[i].next){ int v=bian[i].v; if(ans[v]>ans[u]+bian[i].zhi){ ans[v]=ans[u]+bian[i].zhi; if(!vis[v]){ vis[v]=true; q.push(v); } } } vis[u]=false; } }