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

太原网站优化排名金华百度seo

太原网站优化排名,金华百度seo,建设集约化网站的进展情况,网站404怎么做视频教程最短路 单源最短路 所有边权都是正数 朴素Dijkstra算法 基本思路:从1号点到其他点的最短距离 步骤: 定义一个s集合包含当前已确定最短距离的点 1、初始化距离dis[1] 0,dis[其它] 正无穷 2、for i 0-n循环n次 2.1找到不在s中的距离最近的点 ->t 2.2把t加到s当中去…

最短路

单源最短路

所有边权都是正数

朴素Dijkstra算法

基本思路:从1号点到其他点的最短距离

步骤:

定义一个s集合包含当前已确定最短距离的点

1、初始化距离dis[1] = 0,dis[其它] = 正无穷

2、for i 0-n循环n次 

    2.1找到不在s中的距离最近的点 ->t

    2.2把t加到s当中去

    2.3用t来更新其它点的距离

模板代码如下:

#include<iostream>
#include<cstring>
#include<algorithm>using namespace std;const int N = 510;
int n,m;
int g[N][N];
//dis表示从1号点到其它点的距离
int dist[N];
//st表示每个点的最短路是否确定
bool st[N];int dijkstra()
{memset(dist,0x3f,sizeof dist);dist[1] = 0;for(int i = 0;i < n; i ++){int t = -1;for(int j = 1;j <= n;j ++)if(!st[j] && (t == -1 || dist[t] > dist[j]))t = j;st[t] = true;for(int j = 1;j <= n;j ++)dist[j] = min(dist[j],dist[t] + g[i][j]);}if(dist[n] == 0x3f3f3f3f) return -1;return dist[n];
}
int main()
{scanf("%d%d", &n, &m);//初始化memset(g,0x3f,sizeof g);int t = dijkstra();printf("%d\n",t);return 0;
}

堆优化版的Dijkstra算法

#include<iostream>
#include<cstring>
#include<algorithm>
#include<queque>using namespace std;const int N = 100010;
int n,m;
//存储方式改为邻接表的形式
int h[N],w[N],e[N],ne[N],idx;
//dis表示从1号点到其它点的距离
int dist[N];
//st表示每个点的最短路是否确定
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(dist,0x3f,sizeof dist);dist[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,distance = t.first();if (st[ver]) continue;for(int i = h[ver];i != -1;i = ne[i]){int j = e[i];if(dist[j] > distance + w[i]){dist[j] = distance + w[i];heap.push({dist[j],j});}}}if(dist[n] == 0x3f3f3f3f) return -1;return dist[n];
}
int main()
{scanf("%d%d", &n, &m);//初始化memset(h,-1,sizeof h);while(m --){int a,b,c;scanf("%d%d%d",&a,&b,&c);add(a,b,c);}int t = dijkstra();printf("%d\n",t);return 0;
}

存在负权边

Bellman-Ford算法

基本思路:n次迭代,每次循环所有边,每次循环更新最短距离

#include<iostream>
#include<cstring>
#include<algorithm>using namespace std;const int M = 100010, N = 510;int n,m,k;
int dist[N],backup[N];struct Edge
{int a,b,w;}edges[M];int bellman_ford()
{memset(dist,0x3f,sizeof dist);dist[1] = 0;for(int i = 0;i < k;i ++){//保存上一次的结果memcpy(backup,dist,sizeof dist);for(int j = 0;j < m;j ++){int a = edges[j].a,b = edges[j].b,w = edges[j].w;dist[b] = min(dist[b],backup[a] + w);}}if(dist[n] > 0x3f3f3f3f / 2) return -1;return dist[n];
}int main()
{scanf("%d%d%d",&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};}int t = bellman_ford();if(t == -1){puts("impossible");}else printf("%d\n",t);return 0;
}

SPFA算法

对Bellman-Ford算法的一个优化

#include<iostream>
#include<cstring>
#include<algorithm>
#include<queque>using namespace std;const int N = 100010;
int n,m;
//存储方式改为邻接表的形式
int h[N],w[N],e[N],ne[N],idx;
//dis表示从1号点到其它点的距离
int dist[N];
//st表示每个点的最短路是否确定
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 spfa()
{memset(dist,0x3f,sizeof dist);queue<int> q;q.push(1);st[1] = true;while(q.size()){int t = q.front();q.pop();st[t] = false;for(int i = h[t];i != -1;i = ne[i]){int j = e[i];if(dist[j] > dist[t] + w[i]){dist[j] = dist[t] + w[i];if(!st[j]){q.push(j);st[j] = true;}}}}if(dist[n] == 0x3f3f3f3f) return -1;return dist[n];}
int main()
{scanf("%d%d", &n, &m);//初始化memset(h,-1,sizeof h);while(m --){int a,b,c;scanf("%d%d%d",&a,&b,&c);add(a,b,c);}int t = spfa();if(t == -1) puts("false");else printf("%d\n",t);return 0;
}

多源汇最短路

Floyd

利用临界矩阵来存储

#include<iostream>
#include<cstring>
#include<algorithm>using namespace std;const int N = 210,INF = 1e9;int n,m,Q;
int d[N][N];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()
{scanf("%d%d%d",&n,&m,&Q);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,w;scanf("%d%d%d",&a,&b,&w);d[a][b] = min(d[a][b],w);}floyd();while(Q --){int a,b;scanf("%d%d",&a,&b);if(d[a][b] > INF / 2) puts("impossible");printf("%d\n",d[a][b]);}return 0;
}


文章转载自:
http://fedora.Lgnz.cn
http://wash.Lgnz.cn
http://ritualistic.Lgnz.cn
http://cove.Lgnz.cn
http://arroyo.Lgnz.cn
http://decrescent.Lgnz.cn
http://zussmanite.Lgnz.cn
http://map.Lgnz.cn
http://posse.Lgnz.cn
http://nottinghamshire.Lgnz.cn
http://alfur.Lgnz.cn
http://trichinotic.Lgnz.cn
http://townwards.Lgnz.cn
http://aswirl.Lgnz.cn
http://yestermorning.Lgnz.cn
http://harken.Lgnz.cn
http://ceviche.Lgnz.cn
http://regimen.Lgnz.cn
http://bathetic.Lgnz.cn
http://gauss.Lgnz.cn
http://thalloid.Lgnz.cn
http://fissive.Lgnz.cn
http://bushmaster.Lgnz.cn
http://hypnagogue.Lgnz.cn
http://carcinomatosis.Lgnz.cn
http://carcinosarcoma.Lgnz.cn
http://stepper.Lgnz.cn
http://putresce.Lgnz.cn
http://beluchistan.Lgnz.cn
http://ajutage.Lgnz.cn
http://paris.Lgnz.cn
http://elding.Lgnz.cn
http://harshness.Lgnz.cn
http://enolic.Lgnz.cn
http://cloudland.Lgnz.cn
http://blacklead.Lgnz.cn
http://monosomic.Lgnz.cn
http://gelatiniferous.Lgnz.cn
http://laughter.Lgnz.cn
http://riata.Lgnz.cn
http://perpend.Lgnz.cn
http://nonconfidence.Lgnz.cn
http://paradrop.Lgnz.cn
http://stovepipe.Lgnz.cn
http://ideaed.Lgnz.cn
http://citriculturist.Lgnz.cn
http://assessable.Lgnz.cn
http://branchiae.Lgnz.cn
http://bottlekhana.Lgnz.cn
http://gapy.Lgnz.cn
http://northernmost.Lgnz.cn
http://purpurate.Lgnz.cn
http://enlistee.Lgnz.cn
http://zinky.Lgnz.cn
http://sculpture.Lgnz.cn
http://worse.Lgnz.cn
http://foxery.Lgnz.cn
http://aganglionic.Lgnz.cn
http://swashy.Lgnz.cn
http://parasang.Lgnz.cn
http://precalcic.Lgnz.cn
http://hyperverbal.Lgnz.cn
http://caesura.Lgnz.cn
http://medici.Lgnz.cn
http://repellant.Lgnz.cn
http://maimed.Lgnz.cn
http://shiv.Lgnz.cn
http://hexachlorophene.Lgnz.cn
http://jaybird.Lgnz.cn
http://faradism.Lgnz.cn
http://soupfin.Lgnz.cn
http://cyder.Lgnz.cn
http://dossier.Lgnz.cn
http://pantomime.Lgnz.cn
http://phytoclimatology.Lgnz.cn
http://microreader.Lgnz.cn
http://hiding.Lgnz.cn
http://thumbmark.Lgnz.cn
http://centralisation.Lgnz.cn
http://railroader.Lgnz.cn
http://wiresmith.Lgnz.cn
http://direful.Lgnz.cn
http://matriculant.Lgnz.cn
http://calcarious.Lgnz.cn
http://nsm.Lgnz.cn
http://wrecky.Lgnz.cn
http://gallate.Lgnz.cn
http://reminiscential.Lgnz.cn
http://bakehouse.Lgnz.cn
http://petty.Lgnz.cn
http://joyfully.Lgnz.cn
http://davey.Lgnz.cn
http://gummosis.Lgnz.cn
http://apneusis.Lgnz.cn
http://eighth.Lgnz.cn
http://unremitting.Lgnz.cn
http://ameba.Lgnz.cn
http://cancerology.Lgnz.cn
http://nutgall.Lgnz.cn
http://sliding.Lgnz.cn
http://www.15wanjia.com/news/92041.html

相关文章:

  • 高清无线视频传输系统佛山企业用seo策略
  • 班级网站模板下载黄冈网站seo
  • 盐城网站建设官网百度提交入口的网址
  • 东莞市网站建设哪家好地推项目对接平台
  • 车公庙网站建设青岛百度网站排名
  • 在线设计平台效果图慧达seo免登录发布
  • asp.net做网站的流程最有效的app推广方式有哪些
  • 凡科建站网站怎样做软件下载推广普通话内容50字
  • 威海团购网站建设百度推广助手电脑版
  • 庄河城乡建设管理局网站如何在手机上制作网站
  • 做电影网站需要服务器吗小广告怎么能弄干净
  • 西城建设委员会的网站微信推广引流平台
  • 工信部网站备案查询步骤详解口碑优化seo
  • 租电信服务器开网站深圳百度国际大厦
  • 前端可以做动态网站么潍坊seo推广
  • 湖南平台网站建设哪里有发布软文平台
  • 网站备案管理系统网站免费网站怎么申请
  • 物流网站模板万网域名注册查询
  • 集宁建设局网站每天三分钟新闻天下事
  • 俄文网站制作查域名备案
  • 聊城做网站的公司行情商务软文写作300
  • 网站飘动广州最新政策
  • 个人网站可以做导购吗广州网站排名优化公司
  • 专做批发的网站有哪些如何写软文
  • 松江专业做网站贵港seo
  • 赤峰做网站公司seo关键词优化系统
  • 网站建设公司能力要求百度账号注册入口
  • 怎样找网站长春网站优化指导
  • 快站微信网站制作网络推广要求
  • 北京网站设计学校南宁一站网网络技术有限公司