void spfa(int start){
memset(dis, 0x3f, sizeof(dis));
priority_queue<PII, vector<PII>, greater<PII> >q;
dis[start] = 0;
q.push(make_pair(0, start));
for (int T = 0; T < n; ++T){
PII now = q.top();
q.pop();
int id = now.second;
if (dis[id] != now.first){
continue;
}
for (int i = 0; i < G[id].size(); ++i){
int v = G[id][i].v;
int w = G[id][i].w;
if (dis[v] > dis[id] + w){
dis[v] = dis[id] + w;
q.push(make_pair(dis[v], v));
}
}
}
}
这个写法是否有其正确性;
请不要回答spfa死了