当前位置: 首页 > news >正文

如何做网站报价苏州做网站公司精选苏州聚尚网络

如何做网站报价,苏州做网站公司精选苏州聚尚网络,西安官方网站建设,北京十大平面设计公司本文时间知识点 单源最短路 图论知识汇总 LeetCode100276. 最短路径中的边 给你一个 n 个节点的无向带权图#xff0c;节点编号为 0 到 n - 1 。图中总共有 m 条边#xff0c;用二维数组 edges 表示#xff0c;其中 edges[i] [ai, bi, wi] 表示节点 ai 和 bi 之间有一条…本文时间知识点 单源最短路 图论知识汇总 LeetCode100276. 最短路径中的边 给你一个 n 个节点的无向带权图节点编号为 0 到 n - 1 。图中总共有 m 条边用二维数组 edges 表示其中 edges[i] [ai, bi, wi] 表示节点 ai 和 bi 之间有一条边权为 wi 的边。 对于节点 0 为出发点节点 n - 1 为结束点的所有最短路你需要返回一个长度为 m 的 boolean 数组 answer 如果 edges[i] 至少 在其中一条最短路上那么 answer[i] 为 true 否则 answer[i] 为 false 。 请你返回数组 answer 。 注意图可能不连通。 示例 1 输入n 6, edges [[0,1,4],[0,2,1],[1,3,2],[1,4,3],[1,5,1],[2,3,1],[3,5,3],[4,5,2]] 输出[true,true,true,false,true,true,true,false] 解释 以下为节点 0 出发到达节点 5 的 所有 最短路 路径 0 - 1 - 5 边权和为 4 1 5 。 路径 0 - 2 - 3 - 5 边权和为 1 1 3 5 。 路径 0 - 2 - 3 - 1 - 5 边权和为 1 1 2 1 5 。 示例 2 输入n 4, edges [[2,0,1],[0,1,1],[0,3,4],[3,2,2]] 输出[true,false,false,true] 解释 只有一条从节点 0 出发到达节点 3 的最短路 0 - 2 - 3 边权和为 1 2 3 。 提示 2 n 5 * 104 m edges.length 1 m min(5 * 104, n * (n - 1) / 2) 0 ai, bi n ai ! bi 1 wi 105 图中没有重边。 单源最短路 准备修改 堆优化迪氏定理。优化过程中发现直接使用 迪氏定理就可以了。浪费了20分钟。如果边{n1,n2,w} 是最短路径的边则一定是以下情况之一 0 → n 1 → n 2 → ( n − 1 ) 0 \rightarrow n1 \rightarrow n2 \rightarrow (n-1) 0→n1→n2→(n−1) 0 → n 2 → n 1 → ( n − 1 ) 0 \rightarrow n2 \rightarrow n1 \rightarrow (n-1) 0→n2→n1→(n−1) 计算这两条路径的最短路就可以了。 提前计算好0到各点的最短路径(n-1)到各点的最短路。 时间复杂度 O(mlogm)O(m) m是边数。 代码 class CNeiBo { public: static vectorvectorint Two(int n, vectorvectorint edges, bool bDirect, int iBase 0) {vectorvectorint vNeiBo(n);for (const auto v : edges){vNeiBo[v[0] - iBase].emplace_back(v[1] - iBase);if (!bDirect){vNeiBo[v[1] - iBase].emplace_back(v[0] - iBase);}}return vNeiBo;} static vectorvectorstd::pairint, int Three(int n, vectorvectorint edges, bool bDirect, int iBase 0){vectorvectorstd::pairint, int vNeiBo(n);for (const auto v : edges){vNeiBo[v[0] - iBase].emplace_back(v[1] - iBase, v[2]);if (!bDirect){vNeiBo[v[1] - iBase].emplace_back(v[0] - iBase, v[2]);}}return vNeiBo;}static vectorvectorint Grid(int rCount, int cCount, std::functionbool(int, int) funVilidCur, std::functionbool(int, int) funVilidNext){vectorvectorint vNeiBo(rCount * cCount);auto Move [](int preR, int preC, int r, int c){if ((r 0) || (r rCount)){return;}if ((c 0) || (c cCount)){return;}if (funVilidCur(preR, preC) funVilidNext(r, c)){vNeiBo[cCount * preR preC].emplace_back(r * cCount c);}};for (int r 0; r rCount; r){for (int c 0; c cCount; c){Move(r, c, r 1, c);Move(r, c, r - 1, c);Move(r, c, r, c 1);Move(r, c, r, c - 1);}}return vNeiBo;}static vectorvectorint Mat(vectorvectorint neiBoMat){vectorvectorint neiBo(neiBoMat.size());for (int i 0; i neiBoMat.size(); i){for (int j i 1; j neiBoMat.size(); j){if (neiBoMat[i][j]){neiBo[i].emplace_back(j);neiBo[j].emplace_back(i);}}}return neiBo;} };typedef pairlong long, int PAIRLLI; class CHeapDis { public:CHeapDis(int n,long long llEmpty LLONG_MAX/10):m_llEmpty(llEmpty){m_vDis.assign(n, m_llEmpty);}void Cal(int start, const vectorvectorpairint, int vNeiB){std::priority_queuePAIRLLI, vectorPAIRLLI, greaterPAIRLLI minHeap;minHeap.emplace(0, start);while (minHeap.size()){const long long llDist minHeap.top().first;const int iCur minHeap.top().second;minHeap.pop();if (m_llEmpty ! m_vDis[iCur]){continue;}m_vDis[iCur] llDist;for (const auto it : vNeiB[iCur]){minHeap.emplace(llDist it.second, it.first);}}}vectorlong long m_vDis;const long long m_llEmpty; };class Solution { public:vectorbool findAnswer(int n, vectorvectorint edges) {auto neiBo CNeiBo::Three(n, edges, false);CHeapDis dis1(n),dis2(n);dis1.Cal(0, neiBo);dis2.Cal(n - 1, neiBo);const long long llMinDis dis1.m_vDis[n - 1];vectorbool ret;for (const auto v : edges) {bool b1 ( llMinDis (v[2] dis1.m_vDis[v[0]] dis2.m_vDis[v[1]]));bool b2 (llMinDis (v[2] dis2.m_vDis[v[0]] dis1.m_vDis[v[1]]));ret.emplace_back(b1 || b2);}return ret;} };扩展阅读 视频课程 有效学习明确的目标 及时的反馈 拉伸区难度合适可以先学简单的课程请移步CSDN学院听白银讲师也就是鄙人的讲解。 https://edu.csdn.net/course/detail/38771 如何你想快速形成战斗了为老板分忧请学习C#入职培训、C入职培训等课程 https://edu.csdn.net/lecturer/6176 相关下载 想高屋建瓴的学习算法请下载《喜缺全书算法册》doc版 https://download.csdn.net/download/he_zhidan/88348653 我想对大家说的话闻缺陷则喜是一个美好的愿望早发现问题早修改问题给老板节约钱。子墨子言之事无终始无务多业。也就是我们常说的专业的人做专业的事。如果程序是一条龙那算法就是他的是睛 测试环境 操作系统win7 开发环境 VS2019 C17 或者 操作系统win10 开发环境 VS2022 C17 如无特殊说明本算法用**C**实现。
http://www.zqtcl.cn/news/374798/

相关文章:

  • 网站不备案怎么做网页淘宝客电子商务的网站建设的可用性
  • 傻瓜自助建站软件怎样进网站空间服务器
  • 黑龙江网站建站建设wordpress 邮件
  • 免费发布信息网站有哪些豆芽网站建设
  • 无锡做网站优化公司互动营销用在哪些推广上面
  • 每一个网站都是响应式吗销售渠道策略
  • 凡科平台网站怎么建设广州网站建设信科网络
  • 网站建设公司的服务特点seo实战密码电子书
  • 网站开发保密协议范本北京市建设工程信息网查询
  • 怎样跟网站做优化呢wordpress实现新闻列表
  • 济南手机网站定制费用wordpress安装文档下载
  • 麻涌镇网站仿做郑州做网页的公司
  • 做那个网站中山免备案网站建设
  • 软路由系统如何做网站全网营销式网站
  • 中国建设网官方网站视觉网站建设
  • 苏州乡村旅游网站建设策划书.docincapsula wordpress
  • 百度收录自适应网站滨海做网站哪家公司好
  • 东莞网站排名优化公司福田在线官网
  • 清湖网站建设天猫开店流程及费用2023
  • 邵阳建设网站公司网站建设构架
  • 怎样做网站卖网站网络营销概念
  • 怎样做网站能百度能搜到设计网站公司哪里好
  • 网站收缩栏专业定制网站公司
  • 烟台网站建设方案托管无锡网站制作企业
  • 网站网页是怎么做的用什么做网站 优化
  • 数据网站怎么做的网站开发的开题报告引言
  • 苏州专业网站制作设计做网站上海
  • 做网站可以用中文域名备案嘛山东省住房和城乡城乡建设厅网站
  • 网站建设推广多少钱站长工具seo综合查询关键词
  • 分类信息网站平台的推广做网站的花费