星光璀璨,演技闪耀:夏晴子、苏清歌、苏语棠荧幕魅力大盘点

核心内容摘要

天天摸天天做:开启感官觉醒的极致生活美学
惊!“伽罗太华红着脸翻白眼咬铁球”究竟是何梗?深度揭秘背后的故事!

穿越次元的厕所奇遇:异常公厕像素2.0官方正版2023,等你来解锁!

3650: 边反转的最小路径总成本思路Dijkstra 算法定义 g[i][j] 表示节点 i 到节点 j 这条边的边权。

如果没有 i 到 j 的边则 g[i][j]∞。

定义 dis[i] 表示起点 k 到节点 i 的最短路径长度一开始 dis[k]0其余 dis[i]∞ 表示尚未计算出。

根据 Dijkstra 算法同一个节点我们只会访问一次所以「最多可使用一次开关」这个约束是多余的我们只需把反向边的边权设置为 2wi 即可。

答案为 0 到 n−1 的最短路长度。

class Solution { public: int minCost(int n, vectorvectorint edges) { vectorvectorpairint,int g(n); //邻接表 for(auto e:edges){ int xe[0],ye[1],wte[2]; g[x].emplace_back(y,wt); g[y].emplace_back(x,wt*

; } vectorint dis(n,INT_MAX); //堆中保存 (起点到节点 x 的最短路长度节点 x) priority_queuepairint,int,vectorpairint,int,greater pq; //小根堆 dis[0]0; //起点到自己的距离是 0 pq.emplace(0,

; while(!pq.empty()){ auto [dis_x,x]pq.top(); pq.pop(); if(dis_xdis[x]) continue; //x之前出堆过 if(xn-

return dis_x; //到达终点 for(auto [y,wt]:g[x]){ auto new_dis_ydis_xwt; if(new_dis_ydis[y]){ dis[y]new_dis_y; //更新 x 的邻居的最短路 //懒更新堆只插入数据不更新堆中数据 //相同节点可能有多个不同的 new_dis_y除了最小的 new_dis_y其余值都会触发上面的 continue pq.emplace(new_dis_y,y); } } } return -1; } };

我要打机8xmax更新了啥-我要打机8xmax更新了啥应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123