核心内容摘要
硅谷秘闻:æŸ�大å�‚AIæµ‹è¯•å·¥å…·å‡Œæ™¨â€œé€ å��â€�事件——一å��测试工程师的深度å¤�盘ä¸�行业è¦ç¤º
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*