From 4fa408495dfcfdba15b96d23f784478c6e1030f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Tue, 2 Jan 2024 08:44:18 +0800 Subject: [PATCH] 'commit' --- .../AcWing_TiGao/T3/MiniPathExtend/1134.md | 45 +++++++++---------- .../T3/MiniPathExtend/1134_Bfs.cpp | 16 +++---- .../T3/MiniPathExtend/1134_Dijkstra.cpp | 29 ++++++------ 3 files changed, 44 insertions(+), 46 deletions(-) diff --git a/TangDou/AcWing_TiGao/T3/MiniPathExtend/1134.md b/TangDou/AcWing_TiGao/T3/MiniPathExtend/1134.md index 289128f..9200b44 100644 --- a/TangDou/AcWing_TiGao/T3/MiniPathExtend/1134.md +++ b/TangDou/AcWing_TiGao/T3/MiniPathExtend/1134.md @@ -93,26 +93,26 @@ void add(int a, int b) { e[idx] = b, ne[idx] = h[a], h[a] = idx++; } -int cnt[N]; //从顶点1开始,到其他每个点的最短路有几条 -int dist[N]; //最短距离 +int cnt[N]; // 从顶点1开始,到其他每个点的最短路有几条 +int dis[N]; // 最短距离 int n, m; void bfs() { - memset(dist, 0x3f, sizeof dist); + memset(dis, 0x3f, sizeof dis); queue q; q.push(1); - cnt[1] = 1; //从顶点1开始,到顶点1的最短路有1条 - dist[1] = 0; //距离为0 + cnt[1] = 1; // 从顶点1开始,到顶点1的最短路有1条 + dis[1] = 0; // 距离为0 while (q.size()) { int u = q.front(); q.pop(); for (int i = h[u]; ~i; i = ne[i]) { int j = e[i]; - if (dist[j] > dist[u] + 1) { - dist[j] = dist[u] + 1; + if (dis[j] > dis[u] + 1) { + dis[j] = dis[u] + 1; q.push(j); cnt[j] = cnt[u]; - } else if (dist[j] == dist[u] + 1) + } else if (dis[j] == dis[u] + 1) cnt[j] = (cnt[j] + cnt[u]) % MOD; } } @@ -141,7 +141,7 @@ const int MOD = 100003; int n, m; int cnt[N]; -int dist[N]; +int dis[N]; bool st[N]; int h[N], e[M], ne[M], idx; void add(int a, int b) { @@ -149,30 +149,29 @@ void add(int a, int b) { } void dijkstra() { - memset(dist, 0x3f, sizeof dist); - dist[1] = 0; - // 出发点到自己的最短路径只能有1条 - cnt[1] = 1; + memset(dis, 0x3f, sizeof dis); + dis[1] = 0; + cnt[1] = 1; // 出发点到自己的最短路径有1条,长度是0 // 小顶堆q - priority_queue, greater> pq; - pq.push({0, 1}); + priority_queue, greater> q; + q.push({0, 1}); - while (pq.size()) { - auto t = pq.top(); - pq.pop(); - int u = t.second, d = t.first; + while (q.size()) { + auto t = q.top(); + q.pop(); + int u = t.second; if (st[u]) continue; st[u] = true; for (int i = h[u]; ~i; i = ne[i]) { int j = e[i]; - if (dist[j] > d + 1) { - dist[j] = d + 1; + if (dis[j] > dis[u] + 1) { + dis[j] = dis[u] + 1; cnt[j] = cnt[u]; - pq.push({dist[j], j}); - } else if (dist[j] == d + 1) + q.push({dis[j], j}); + } else if (dis[j] == dis[u] + 1) cnt[j] = (cnt[j] + cnt[u]) % MOD; } } diff --git a/TangDou/AcWing_TiGao/T3/MiniPathExtend/1134_Bfs.cpp b/TangDou/AcWing_TiGao/T3/MiniPathExtend/1134_Bfs.cpp index 240578b..8aeb9d8 100644 --- a/TangDou/AcWing_TiGao/T3/MiniPathExtend/1134_Bfs.cpp +++ b/TangDou/AcWing_TiGao/T3/MiniPathExtend/1134_Bfs.cpp @@ -7,26 +7,26 @@ void add(int a, int b) { e[idx] = b, ne[idx] = h[a], h[a] = idx++; } -int cnt[N]; //从顶点1开始,到其他每个点的最短路有几条 -int dist[N]; //最短距离 +int cnt[N]; // 从顶点1开始,到其他每个点的最短路有几条 +int dis[N]; // 最短距离 int n, m; void bfs() { - memset(dist, 0x3f, sizeof dist); + memset(dis, 0x3f, sizeof dis); queue q; q.push(1); - cnt[1] = 1; //从顶点1开始,到顶点1的最短路有1条 - dist[1] = 0; //距离为0 + cnt[1] = 1; // 从顶点1开始,到顶点1的最短路有1条 + dis[1] = 0; // 距离为0 while (q.size()) { int u = q.front(); q.pop(); for (int i = h[u]; ~i; i = ne[i]) { int j = e[i]; - if (dist[j] > dist[u] + 1) { - dist[j] = dist[u] + 1; + if (dis[j] > dis[u] + 1) { + dis[j] = dis[u] + 1; q.push(j); cnt[j] = cnt[u]; - } else if (dist[j] == dist[u] + 1) + } else if (dis[j] == dis[u] + 1) cnt[j] = (cnt[j] + cnt[u]) % MOD; } } diff --git a/TangDou/AcWing_TiGao/T3/MiniPathExtend/1134_Dijkstra.cpp b/TangDou/AcWing_TiGao/T3/MiniPathExtend/1134_Dijkstra.cpp index 8d6e8eb..74d98ab 100644 --- a/TangDou/AcWing_TiGao/T3/MiniPathExtend/1134_Dijkstra.cpp +++ b/TangDou/AcWing_TiGao/T3/MiniPathExtend/1134_Dijkstra.cpp @@ -6,7 +6,7 @@ const int MOD = 100003; int n, m; int cnt[N]; -int dist[N]; +int dis[N]; bool st[N]; int h[N], e[M], ne[M], idx; void add(int a, int b) { @@ -14,30 +14,29 @@ void add(int a, int b) { } void dijkstra() { - memset(dist, 0x3f, sizeof dist); - dist[1] = 0; - // 出发点到自己的最短路径只能有1条 - cnt[1] = 1; + memset(dis, 0x3f, sizeof dis); + dis[1] = 0; + cnt[1] = 1; // 出发点到自己的最短路径有1条,长度是0 // 小顶堆q - priority_queue, greater> pq; - pq.push({0, 1}); + priority_queue, greater> q; + q.push({0, 1}); - while (pq.size()) { - auto t = pq.top(); - pq.pop(); - int u = t.second, d = t.first; + while (q.size()) { + auto t = q.top(); + q.pop(); + int u = t.second; if (st[u]) continue; st[u] = true; for (int i = h[u]; ~i; i = ne[i]) { int j = e[i]; - if (dist[j] > d + 1) { - dist[j] = d + 1; + if (dis[j] > dis[u] + 1) { + dis[j] = dis[u] + 1; cnt[j] = cnt[u]; - pq.push({dist[j], j}); - } else if (dist[j] == d + 1) + q.push({dis[j], j}); + } else if (dis[j] == dis[u] + 1) cnt[j] = (cnt[j] + cnt[u]) % MOD; } }