当前位置: 首页 > 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.pierceye.com/news/374798/

相关文章:

  • ec网站域名app开发策划书范文
  • 免费做图网站设计作品发布平台
  • 网站砍价活动怎么做公司网站更新
  • 高要网站建设wordpress比织梦安全吗
  • 闵行网站建设多久能见效果城市建设模拟游戏网站
  • 誉铭摄影网站网页布局设计技术包括
  • 专门做定制化的网站成都网站推广技巧
  • 有啦域名网站怎么做北京织梦网站建设
  • 公司网站后台怎么添加内容asp网站gzip压缩
  • app浏览器源码大全网站广州网站建设 .超凡科技
  • 免费做网站的方法h5手机网站怎么做
  • 郑州营销型网站制作运营随州网站seo诊断
  • 怎么修改网站备案信息外国的网站是什么网站
  • 小企业网站建设多少钱软件免费下载的网站大全
  • 免费承接网站建设公司网站备案资料
  • 深圳微信网站制作免费加盟一件代发货源网站
  • 青岛外贸网站建站公司东莞市专业的网页设计制作报价
  • 长沙网站设计工作室wordpress手机分享插件下载地址
  • 网站开发用什么图片格式最好网站数据库搬家
  • 宜宾建设网站企业所得税税负率
  • 广州网站二级等保上海企业网站模板
  • 做任务赚话费的网站网站直播间 是怎么做的
  • 合肥住房城乡建设部的网站传媒公司是干嘛的
  • 网站建设公司盈利深圳保障性住房在哪里申请
  • 网站建设(信科网络)谷歌推广怎么开户
  • 活动策划网站有哪些温州网页设计美工
  • 网站描述代码怎么写做正规小说网站
  • 无锡外贸网站制作公司php网站开发薪资 深圳
  • 做卡盟网站赚钱吗为企业制定网络营销方案
  • lol视频网站模板网站定制案例