bool st[N];//是否加入图
int d[N];//到起点的距离
void dj(int S,int T)//从S到T
{
priority_queue<PII,vector<PII>,greater<PII> > q;
q.push({0,S});
memset(d,0x3f,sizeof d);
d[S] = 0;
while (!q.empty())
{
auto it = q.top();
q.pop();
int ver = it.second;
if (ver==T) break;
if (st[ver]) continue;
st[ver] = true;
for (int i = h[ver];i != -1;i = h[i])
{
int x = e[i];
int dist = w[i];//距离
if (st[x]) continue;
if (d[x] > d[ver] + dist)
{
d[x] = d[ver] + dist;
q.push({d[x],x});
}
}
}
}
图论板子——迪杰斯特拉(堆优化)
于 2022-06-20 13:17:58 首次发布