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});}}}
}