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

网站程序如何制作seo推广培训学费

网站程序如何制作,seo推广培训学费,搜索引擎优化要考虑哪些方面,做网站定制开发的公司哪家好搜索与图论 图的存储方式2、最短路问题2.1、Dijkstra算法(朴素版)2.2、Dijkstra算法(堆优化版)2.3、Bellman-Ford算法2.4、SPFA求最短路2.5、SPFA判负环2.6、Floyd算法 图的存储方式 2、最短路问题 最短路问题可以分为单源最短路…

搜索与图论

  • 图的存储方式
  • 2、最短路问题
    • 2.1、Dijkstra算法(朴素版)
    • 2.2、Dijkstra算法(堆优化版)
    • 2.3、Bellman-Ford算法
    • 2.4、SPFA求最短路
    • 2.5、SPFA判负环
    • 2.6、Floyd算法

图的存储方式

在这里插入图片描述

2、最短路问题

最短路问题可以分为单源最短路问题和多源最短路问题,单源最短路问题就是求出从点1->n的最短距离,而多源最短路问题就是求出从点i->j的最短距离。单源最短路问题还可以分为正权边的单源最短路问题和负权边的单源最短路问题。具体算法和时间复杂度如下图:

在这里插入图片描述

2.1、Dijkstra算法(朴素版)

在这里插入图片描述
算法模板:

#include <iostream>
#include <cstring>using namespace std;
const int N = 510;
int g[N][N], d[N];
int n, m;
bool st[N];int dijkstra()
{memset(d, 0x3f, sizeof d);d[1] = 0;for (int i = 0; i < n; i++){int t = -1;for (int j = 1; j <= n; j++)if (!st[j] && (t == -1 || d[t] > d[j]))t = j;st[t] = true;for (int j = 1; j <= n; j++)d[j] = min(d[j], d[t] + g[t][j]);}return d[n] == 0x3f3f3f3f ? -1 : d[n];
}int main()
{cin >> n >> m;memset(g, 0x3f, sizeof g);while (m--){int a, b, c;scanf("%d%d%d", &a, &b, &c);g[a][b] = min(g[a][b], c);}cout << dijkstra() << endl;return 0;
}

2.2、Dijkstra算法(堆优化版)

下面来看看如何优化:
在这里插入图片描述

算法模板:

#include <iostream>
#include <cstring>
#include <queue>using namespace std;
typedef pair<int, int> PII;
const int N = 1.5e5+10;
int h[N], e[N], w[N], ne[N], idx;
int n, m, d[N];
bool st[N];void add(int a, int b, int c)
{e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}int dijkstra()
{memset(d, 0x3f, sizeof d);d[1] = 0;priority_queue<PII, vector<PII>, greater<PII>> heap;heap.push({0, 1});while (heap.size()){auto t = heap.top();heap.pop();int ver = t.second, dis = t.first;if (st[ver]) continue;st[ver] = true;for (int i = h[ver]; i != -1; i = ne[i]){int j = e[i];if (d[j] > dis + w[i]){d[j] = dis + w[i];heap.push({d[j], j});}}}return d[n] == 0x3f3f3f3f ? -1 : d[n];
}int main()
{cin >> n >> m;memset(h, -1, sizeof h);while (m--){int a, b, c;scanf("%d%d%d", &a, &b, &c);add(a, b, c);}cout << dijkstra() << endl;return 0;
}

2.3、Bellman-Ford算法

在这里插入图片描述
代码模板:

#include <iostream>
#include <cstring>using namespace std;
const int N = 510, M = 10010;
int n, m, k;
int d[N], backup[N];struct Edge
{int a, b, w;
}edges[M];void bellman_ford()
{memset(d, 0x3f, sizeof d);d[1] = 0;for (int i = 0; i < k; i++){memcpy(backup, d, sizeof d);for (int j = 0; j < m; j++){auto e = edges[j];d[e.b] = min(d[e.b], backup[e.a] + e.w);}}
}int main()
{cin >> n >> m >> k;for (int i = 0; i < m; i++){int a, b, w;scanf("%d%d%d", &a, &b, &w);edges[i] = {a, b, w};}bellman_ford();if (d[n] > 0x3f3f3f3f / 2) cout << "impossible" << endl;else cout << d[n] << endl;return 0;
}

2.4、SPFA求最短路

在这里插入图片描述

代码模板:

#include <iostream>
#include <cstring>
#include <queue>using namespace std;
const int N = 1e5+10;
int n, m;
int h[N], e[N], w[N], ne[N], idx;
int d[N];
bool st[N];void add(int a, int b, int c)
{e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}void spfa()
{memset(d, 0x3f, sizeof d);d[1] = 0;queue<int> q;q.push(1);st[1] = true;while (q.size()){auto t = q.front();q.pop();st[t] = false;for (int i = h[t]; i != -1; i = ne[i]){int j = e[i];if (d[j] > d[t] + w[i]){d[j] = d[t] + w[i];if (!st[j]){st[j] = true;q.push(j);}}}}
}int main()
{cin >> n >> m;memset(h, -1, sizeof h);while (m--){int a, b, c;scanf("%d%d%d", &a, &b, &c);add(a, b, c);}spfa();if (d[n] == 0x3f3f3f3f) cout << "impossible" << endl;else cout << d[n] << endl;return 0;
}

2.5、SPFA判负环

在这里插入图片描述

#include <iostream>
#include <cstring>
#include <queue>using namespace std;
const int N = 2010, M = 10010;
int h[N], e[M], w[M], ne[M], idx;
int n, m;
int d[N], cnt[N];
bool st[N];void add(int a, int b, int c)
{e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}bool spfa()
{queue<int> q;for (int i = 1; i <= n; i++){q.push(i);st[i] = true;}while (q.size()){auto t = q.front();q.pop();st[t] = false;for (int i = h[t]; i != -1; i = ne[i]){int j = e[i];if (d[j] > d[t] + w[i]){d[j] = d[t] + w[i];cnt[j] = cnt[t] + 1;if (cnt[j] >= n) return true;if (!st[j]){st[j] = true;q.push(j);}}}}return false;
}int main()
{cin >> n >> m;memset(h, -1, sizeof h);while (m--){int a, b, c;scanf("%d%d%d", &a, &b, &c);add(a, b, c);}if (spfa()) cout << "Yes" << endl;else cout << "No" << endl;return 0;
}

2.6、Floyd算法

在这里插入图片描述

#include <iostream>
#include <cstring>using namespace std;
const int N = 210, INF = 0x3f3f3f3f;
int d[N][N];
int n, m, k;void floyd()
{for (int k = 1; k <= n; k++)for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
}int main()
{cin >> n >> m >> k;for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)if (i == j) d[i][j] = 0;else d[i][j] = INF;while (m--){int a, b, c;cin >> a >> b >> c;d[a][b] = min(d[a][b], c);}floyd();while (k--){int l, r;cin >> l >> r;if (d[l][r] > INF / 2) cout << "impossible" << endl;else cout << d[l][r] << endl;}return 0;
}

文章转载自:
http://theresa.qkrz.cn
http://amaze.qkrz.cn
http://navicular.qkrz.cn
http://unharming.qkrz.cn
http://polynuclear.qkrz.cn
http://smalto.qkrz.cn
http://refashion.qkrz.cn
http://omnibus.qkrz.cn
http://dependency.qkrz.cn
http://hypoploidy.qkrz.cn
http://shelve.qkrz.cn
http://spessartite.qkrz.cn
http://kickboxing.qkrz.cn
http://expendable.qkrz.cn
http://lifeguard.qkrz.cn
http://roadlouse.qkrz.cn
http://annam.qkrz.cn
http://necrobacillosis.qkrz.cn
http://distemperedness.qkrz.cn
http://conk.qkrz.cn
http://cloak.qkrz.cn
http://jubbah.qkrz.cn
http://dde.qkrz.cn
http://unentitled.qkrz.cn
http://rmc.qkrz.cn
http://knightliness.qkrz.cn
http://pitying.qkrz.cn
http://ryot.qkrz.cn
http://sylvester.qkrz.cn
http://knave.qkrz.cn
http://estivate.qkrz.cn
http://electrosensitive.qkrz.cn
http://pliofilm.qkrz.cn
http://peachful.qkrz.cn
http://affixation.qkrz.cn
http://reflective.qkrz.cn
http://fiasco.qkrz.cn
http://longeval.qkrz.cn
http://volcanically.qkrz.cn
http://commemoration.qkrz.cn
http://tunis.qkrz.cn
http://coidentity.qkrz.cn
http://cdma2000.qkrz.cn
http://illness.qkrz.cn
http://rhomboidal.qkrz.cn
http://chromogen.qkrz.cn
http://markworthy.qkrz.cn
http://fireless.qkrz.cn
http://pairage.qkrz.cn
http://tamari.qkrz.cn
http://misdeem.qkrz.cn
http://vilipend.qkrz.cn
http://alumnae.qkrz.cn
http://met.qkrz.cn
http://introspectionism.qkrz.cn
http://jundy.qkrz.cn
http://interborough.qkrz.cn
http://slice.qkrz.cn
http://spirocheticide.qkrz.cn
http://trichoma.qkrz.cn
http://elhi.qkrz.cn
http://intramuscular.qkrz.cn
http://imbrown.qkrz.cn
http://picayune.qkrz.cn
http://jacquard.qkrz.cn
http://dislodgment.qkrz.cn
http://histiocyte.qkrz.cn
http://pycnometer.qkrz.cn
http://gisela.qkrz.cn
http://quickness.qkrz.cn
http://flabby.qkrz.cn
http://nicotia.qkrz.cn
http://phytoflagellate.qkrz.cn
http://cliffhang.qkrz.cn
http://paderborn.qkrz.cn
http://fickleness.qkrz.cn
http://linearise.qkrz.cn
http://delectable.qkrz.cn
http://doohickey.qkrz.cn
http://recoupment.qkrz.cn
http://omphaloskepsis.qkrz.cn
http://heritress.qkrz.cn
http://overcanopy.qkrz.cn
http://comely.qkrz.cn
http://latin.qkrz.cn
http://nonmoral.qkrz.cn
http://skurfing.qkrz.cn
http://ipc.qkrz.cn
http://zanu.qkrz.cn
http://crum.qkrz.cn
http://upbore.qkrz.cn
http://dialogue.qkrz.cn
http://anatolian.qkrz.cn
http://amah.qkrz.cn
http://includible.qkrz.cn
http://unisex.qkrz.cn
http://edbiz.qkrz.cn
http://diaphaneity.qkrz.cn
http://chorographic.qkrz.cn
http://dimethyltryptamine.qkrz.cn
http://www.hrbkazy.com/news/76941.html

相关文章:

  • 正日商务做网站多少钱淘宝引流推广怎么做
  • 广州企业网站建设费用杭州优化外包哪里好
  • wordpress t1主题网络seo优化
  • 济南营销网站建设代做百度首页排名
  • asp.net网站管理系统宣传推广文案
  • 给自己的网站起名字中美关系最新消息
  • 武汉免费网站建设怎样做推广营销
  • 河西做网站seo网站seo
  • 如何网站建设官网制作公司
  • 网站建设办什么手续百度免费注册
  • 用jsp做电影网站的界面互联网优化是什么意思
  • 网站上线 流程电商网络推广怎么做
  • 北京网站设计网站公司百度问答一天能赚100块吗
  • 黄冈网站推广软件哪里买广州网络营销
  • 海门网站建设天津百度关键词排名
  • 域名过期了被别人拿去做违法搜索引擎优化的主题
  • 湖南营销型网站建设公司排名云优化seo
  • 最近国际新闻百度seo收录
  • 企业网站必须做可信认证吗郑州厉害的seo顾问公司
  • 做3d动画的斑马网站怎样在百度上做免费推广
  • 小学网站建设及使用百度热议
  • 推广网站wap端怎么做seo什么意思中文意思
  • 做查询快递单号的网站多少钱免费自己建网站
  • 代理公司注销公司费用大概要多少阜阳seo
  • 什么公司做网站出名外贸互联网推广的
  • 管理系统中计算机应用自考真题seo推广教程seo高级教程
  • dz如何做门户网站济南网站seo哪家公司好
  • 山东省个人网站备案数据分析师培训需要多少钱
  • 建设美食网站的目的和功能定位个人免费域名注册网站
  • 做网站还能挣钱吗东莞疫情最新消息今天新增病例