在学校OJ上做一道题,删去visit数组后通过,加上visit数组后只有60,不知道大家有没有遇到过这种情况抑或是我的代码有什么问题?
void dij(int n,int s){
priority_queue< pair<int,int>,vector<pair<int,int> >, greater<pair<int,int> > > q;
memset(ans,0x7f,sizeof(ans));
memset(visit,0,sizeof(visit));
q.push(make_pair(0,s));
ans[s]=0;
while(!q.empty()){
int node=q.top().second;
q.pop();
for(int j=1;j<=n;j++){
if(lt[node][j]){
if(ans[node]+lt[node][j]<ans[j])//若加上!visit[j]会爆40
{
ans[j]=ans[node]+lt[node][j];
q.push(make_pair(lt[node][j],j));
}
}
}
}
}