add: 220514, but in Chinese [cpp]

This commit is contained in:
Eat-Swap 2022-05-14 23:35:17 +08:00
parent c9e7144426
commit 1ef02d9bba
Signed by: Eatswap
GPG Key ID: BE661106A1F3FA0B
1 changed files with 89 additions and 40 deletions

View File

@ -11,49 +11,98 @@
* Comment: This is Dijkstra's algorithm.
*/
class Solution {
public:
static int networkDelayTime(const std::vector<std::vector<int>>& times, int n, int k) {
const int edgeCnt = times.size();
std::vector<std::tuple<int, int, int>> edges;
std::vector<std::vector<int>> G(n);
edges.reserve(edgeCnt);
for (int i = 0; i < edgeCnt; ++i) {
edges.emplace_back(times[i][0] - 1, times[i][1] - 1, times[i][2]);
G[times[i][0] - 1].push_back(i);
}
#define 类 class
#define 公共的 public
#define 静态 static
#define 整数 int
#define 标准 std
#define 常量 const
#define 为了 for
#define 规模 size
#define 向量 vector
#define 保留 reserve
#define 当 while
#define 自动 auto
#define 顶部 top
#define 如果 if
#define 继续 continue
#define 主函数 main
#define 真 true
#define 返回 return
#define 开始 begin
#define 结束 end
#define 更大的 greater
#define 最大元素 max_element
#define 推 push
#define 最后原地构造 emplace_back
#define 元组 tuple
#define 空 empty
#define 优先队列 priority_queue
#define 组合 pair
#define 真假 bool
#define 弹出 pop
#define 输出 cout
#define 推到末尾 push_back
#define 左中括号 [
#define 右中括号 ]
#define 左括号 (
#define 右括号 )
#define 等于 =
#define 相等 ==
#define 小于等于 <=
#define 加 +
#define 加加 ++
#define 减减 --
#define 减 -
#define 小于 <
#define 大于 >
#define 左大括号 {
#define 右大括号 }
#define 分号 ;
#define 逗号 ,
std::vector<int> dist(n, 0x6FFFFFFF);
std::vector<bool> vis(n);
--k;
Solution
:
networkDelayTime :: :: &
.
:: ::
:: ::
.
0
. 0 1 1 1 2
0 1 .
// pair<dist, idx>
std::priority_queue<std::pair<int, int>, std::vector<std::pair<int, int>>, std::greater<>> q;
q.push({0, k});
dist[k] = 0;
while (!q.empty()) {
const auto [len, node] = q.top();
q.pop();
:: 0x6FFFFFFF
:: 访
if (vis[node])
continue;
vis[node] = true;
:: :: :: :: ::
. 0
0
!.
.
.
for (int eId : G[node]) {
const auto [f, t, d] = edges[eId];
if (dist[t] <= dist[node] + d)
continue;
dist[t] = dist[node] + d;
q.push({dist[t], t});
}
}
访
访
int ret = *std::max_element(dist.begin(), dist.end());
return ret == 0x6FFFFFFF ? -1 : ret;
}
};
:
.
int main() {
std::cout << Solution::networkDelayTime({{2,1,1},{2,3,1},{3,4,1}}, 4, 2);
return 0;
}
*:: . .
0x6FFFFFFF ? 1 :
:: << Solution::networkDelayTime 2 1 1 2 3 1 3 4 1 4 2
0