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

二级域名做网站有哪些缺点站点查询

二级域名做网站有哪些缺点,站点查询,卢松松的网站,网站购买空间多少钱题目链接 1.有限制的 B e l l m a n _ F o r d Bellman\_Ford Bellman_Ford 时间复杂度: O ( N ∗ M ) O(N*M) O(N∗M) 在传统的 B e l l m a n _ F o r d Bellman\_Ford Bellman_Ford 中,可以处理边数不大于 K K K 条边的最短距离 但我们只要加一条限制(实际…

题目链接

1.有限制的 B e l l m a n _ F o r d Bellman\_Ford Bellman_Ford

时间复杂度: O ( N ∗ M ) O(N*M) O(NM)

在传统的 B e l l m a n _ F o r d Bellman\_Ford Bellman_Ford 中,可以处理边数不大于 K K K 条边的最短距离
但我们只要加一条限制(实际上只多了两行代码)
就可以实现求恰好等于 K K K 条边的最短距离
具体的就在于其核心代码中:

 for(int i = 0; i < k; i ++ )    //最大经过几条边就迭代几次{           memcpy(backup, dist, sizeof dist);for(int j = 0; j < m; j ++ )    //遍历所有边更新最短路{int a = edge[j].a, b = edge[j].b, w = edge[j].w;dist[b] = min(dist[b], backup[a] + w);  //每次更新到顶点b的边}}

其中为什么要拷贝一份 d i s t dist dist 数组就不解释了
我们只要将上述代码改为:

    for (int i = 0; i < k; i++) {memcpy(backup, d, sizeof(d));//与最多经过k条边这里不同!memset(d, 0x3f, sizeof(d)); //addfor (int j = 0; j < m; j++) {int a = edges[j].a, b = edges[j].b, c = edges[j].c;//与最多经过k条边这里不同!d[b] = min(d[b], backup[a] + c);d[a] = min(d[a], backup[b] + c);//add,可以与上面的交换位置}}

最大的不同在于我们拷贝完 d i s t dist dist 数组之后,反手将 d i s t dist dist 数组初始化为正无穷了
这样在下一次松弛操作的时候,我们就必须进行松弛了,因为任何数肯定小于这个正无穷
只不过在松弛的时候,不仅要松弛 d s i t [ b ] dsit[b] dsit[b],还要松弛 d i s t [ a ] dist[a] dist[a]
注意经过的边虽然满足恰好 K K K 条,但是可能会有重复的边!

#pragma GCC optimize(2) //累了就吸点氧吧~#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_map>using namespace std;const int N = 210, M = 1000010;int n, m, st, en, k;
int dist[N], backup[N];
unordered_map<int, int> id;
struct Edge{//Bellman_Ford的数据结构为三元组int a, b, c;
}edge[M];int Bellman_Ford()
{memset(dist, 0x3f, sizeof dist);dist[id[st]] = 0;for(int i = 0; i < k; i ++ ){memcpy(backup, dist, sizeof dist);//是在外层循环copy的!!!memset(dist, 0x3f, sizeof dist);for(int j = 0; j < m; j ++ ){int a = edge[j].a, b = edge[j].b, c = edge[j].c;dist[b] = min(dist[b], backup[a] + c);dist[a] = min(dist[a], backup[b] + c);}}return dist[id[en]];
}int main()
{cin >> k >> m >> st >> en;if(!id.count(st))   id[st] = ++ n;if(!id.count(en))   id[en] = ++ n;for(int i = 0; i < m; i ++ ){int a, b, c;cin >> c >> a >> b;//这道题比较恶心,需要先读入边长if(!id.count(a)) id[a] = ++ n;if(!id.count(b)) id[b] = ++ n;edge[i] = {id[a], id[b], c};}// cout << n << endl;// for(int i = 1; i <= n; i ++ )   cout << dist[i] << " \n"[i == n];cout << Bellman_Ford() << endl; return 0;
}

2.倍增思想Floyd

参考:
1
2
3

http://www.dtcms.com/wzjs/319323.html

相关文章:

  • wordpress搭建小程序广西seo快速排名
  • 自家企业网络推广seo优化方案项目策划书
  • 用网站源码怎么做网站关键词推广价格
  • 服装电子商务网站有哪些百度优化教程
  • 全网影视vip网站建设成品网站源码1688免费推荐
  • 专门做旅游的视频网站有哪些seo关键词排名优化怎样收费
  • 企业商城网站 .nettorrentkitty磁力猫引擎
  • 手机网站设计背景图片如何制作网址链接
  • 网站建设设计文档模板app优化方案
  • 哪些网站做的好处和坏处微信营销平台有哪些
  • 甘肃省住房和城乡建设厅网站百度指数数据分析平台入口
  • 东莞智通人才网招聘信息网网站关键词优化方案
  • 南山企业网站建设百度网址大全下载安装
  • 怎么样才能自己做网站打广告软文营销案例200字
  • 正能量直播网站上海谷歌seo推广公司
  • 做IPv6网站升级的公司有哪些海城seo网站排名优化推广
  • 网站建设与管理 教学视频广东东莞最新疫情
  • angular网站模板下载营销最好的方法
  • 小公司让我用织梦做网站今日财经新闻
  • sharepoint做门户网站长沙百度地图
  • 如何搭建第三方网站如何用html制作一个网页
  • 大学生课程设计网站小红书seo
  • 佛山知名营销网站开发搜狗站长平台
  • 建设网站服务费会计分录2023近期舆情热点事件
  • 铁威马 Nas 做网站腾讯营销平台
  • 网站图片用什么做的seo快速排名多少钱
  • 龙岩市永定区疫情最新消息郑州官网网站推广优化公司
  • 第三方网站做app百度app官网
  • 成都网站建设 3e网络推销一个产品的方案
  • 企业网站制作报价表百度免费优化