#A6. 迪杰斯特拉算法-填空题

迪杰斯特拉算法-填空题

vector<pair<int, int>> a[1000005]; // 邻接表存储图
int d[1000005]; // 保存源点到各顶点的最短距离
int v[1000005]; // 访问标记数组
priority_queue<pair<int, int>, vector<pair<int, int>>, {{ input(1) }}> q; // 小根堆

void bfs(int p) {
memset(d, 0x3f, sizeof(d));
d[p] = {{ input(2) }}; // 初始化源点距离
q.push({d[p], p});
while (!q.empty()) {
int x = q.top().second;
q.pop();
// 跳过已处理的节点(关键优化)
if ({{ input(3) }}) continue; // 填空:访问判断条件
{{ input(4) }} = 1; // 填空:标记节点已访问
for (int i = 0; i < a[x].size(); i++) {
int y = a[x][i].{{ input(5) }}; // 填空:获取邻居节点
int ww = a[x][i].{{ input(6) }}; // 填空:获取边权
if (d[y] > {{ input(7) }}) { // 填空:松弛条件
d[y] = {{ input(8) }}; // 填空:更新最短距离
q.push({{{ input(9) }}, y}); // 填空:新距离入队
}
}
}
}