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

浙江网络安全学院官网站长工具seo综合查询推广

浙江网络安全学院官网,站长工具seo综合查询推广,网站开发需呀那些技术,自己个人怎样做电商Dijkstra 用来计算从一个点到其他所有点的最短路径的算法&#xff0c;是一种单源最短路径算法。也就是说&#xff0c;只能计算起点只有一个的情况。Dijkstra的时间复杂度是O (|v|^2)&#xff0c;它不能处理存在负边权的情况。 邻接矩阵存图 #include<iostream> using …

Dijkstra

用来计算从一个点到其他所有点的最短路径的算法,是一种单源最短路径算法。也就是说,只能计算起点只有一个的情况。Dijkstra的时间复杂度是O (|v|^2),它不能处理存在负边权的情况。

邻接矩阵存图

#include<iostream>
using namespace std;//最短路径——Djikstra算法
// 求单元最短路
// 时间复杂度:O(n^2)
//求最短路径:BFS、Floyd(基于dp)、Djikstra算法//以 邻接矩阵 存 带权无向图 为例#define INF 68888int g[105][105];
int dist[105];//记录最短路的大小
int path[105];//记录最短路的顺序
int flag[105];//flag[i]=1 i的最短路已确定  =0未确定
int n, m;
int s;//起点void Djikstra(int s) {//起点到起点flag[s] = 1;dist[s] = 0;path[s] = s;//其他点到起点int minn = INF;//最小的dist的值int t=0;//最小的dist的下标for (int i = 1; i < n; i++) {//循环n-1次minn = INF;for (int j = 0; j < n; j++) {if (flag[j] == 0 && dist[j] < minn) {minn = dist[j];t = j;}}//t点时dist值最小的点flag[t] = 1;//变为已确定最短路径的点//t去中转t的邻接点 修改distfor (int j = 0; j < n; j++) {if (flag[j] == 0 && dist[j] > (dist[t] + g[t][j])) {dist[j] = dist[t] + g[t][j];path[j] = t;}}}
}int main() {cin >> n >> m;//初始化for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (i == j) {g[i][j] = 0;}else {g[i][j] = INF;}}}int x, y, w;for (int i = 1; i <= m; i++) {cin >> x >> y >> w;g[x][y] = g[y][x] = w;}cin >> s;//初始化for (int i = 0; i < n; i++) {dist[i] = g[s][i];if (g[s][i] == INF) {path[i] = -1;}else {path[i] = s;}}Djikstra(s);//输出验证for (int i = 0; i < n; i++) {cout << "s到" << i << "的最短路径长度是" << dist[i] <<":";//倒叙输出路径cout << i << " ";int j = i;while (path[j] != j) {cout << path[j] << " ";j = path[j];}cout << endl;}return 0;
}

链式前向星版本

#include<bits/stdc++.h>
using namespace std;
#define inf 1001 //链式前向星写Dijkstra 
int n,m,cnt; //n<100 0<权值<1000
int h[105];
struct Edge{int to,w,next;
}e[10005]; //100个点 最多100*(100-1)条边 
int dis[105],v[105]; void add(int u,int v,int w){e[cnt].to=v;e[cnt].w=w;e[cnt].next=h[u]; h[u]=cnt;cnt++;
}void dij(int x){for(int i=1;i<=n;++i) {dis[i]=inf;}dis[x]=0;int u; for(int j=1;j<=n;++j){int minn=inf,k=-1;for(int i=1;i<=n;++i){if(v[i]==0&&dis[i]<minn){minn=dis[i];k=i;}	} v[k]=1;for(int i=h[k];i!=-1;i=e[i].next){u=e[i].to;if(v[u]==0&&dis[u]>dis[k]+e[i].w){dis[u]=dis[k]+e[i].w; }}}
}int main(){memset(h,-1,sizeof h);cin>>n>>m;int x,y,w; for(int i=1;i<=m;++i){cin>>x>>y>>w;//有向图add(x,y,w); } cin>>x;dij(x);for(int i=1;i<=n;++i){cout<<dis[i]<<" ";}return 0;
} 

优化版本:堆 找最小的点 ------> 优先队列

#include<bits/stdc++.h>
using namespace std;
#define inf 1001 //链式前向星写Dijkstra 
int n,m,cnt; //n<100 0<权值<1000
int h[105];
struct Edge{int to,w,next;
}e[10005]; //100个点 最多100*(100-1)条边 
int dis[105],v[105]; 
typedef pair<int,int> PII; 
priority_queue<PII,vector<PII>,greater<PII>> q; void add(int u,int v,int w){e[cnt].to=v;e[cnt].w=w;e[cnt].next=h[u]; h[u]=cnt;cnt++;
}void dij(int x){//堆优化 for(int i=1;i<=n;++i) {dis[i]=inf;}dis[x]=0;PII now;now.first=dis[x];now.second=x;q.push(now);while(q.size()){now=q.top();q.pop();int minn=now.first;int k=now.second;if(v[k]==1) continue;//避免重复入队的点v[k]=1;for(int i=h[k];i!=-1;i=e[i].next){int u=e[i].to;if(dis[u]>minn+e[i].w){dis[u]=minn+e[i].w;now.first=dis[u];now.second=u;q.push(now); }}}
}int main(){memset(h,-1,sizeof h);cin>>n>>m;int x,y,w; for(int i=1;i<=m;++i){cin>>x>>y>>w;//有向图add(x,y,w); } cin>>x;dij(x);for(int i=1;i<=n;++i){cout<<dis[i]<<" ";}return 0;
} 

例题

1

P4779 【模板】单源最短路径(标准版) - 洛谷

#include<bits/stdc++.h>
using namespace std;
#define inf 1e9 
using ll=long long ;//链式前向星写Dijkstra 
int n,m,cnt; //n<100 0<权值<1000
int h[100005];
struct Edge{int to,w,next;
}e[200005]; //100个点 最多100*(100-1)条边 
ll dis[100005];
int v[100005]; 
typedef pair<int,int> PII; 
priority_queue<PII,vector<PII>,greater<PII>> q; void add(int u,int v,int w){e[cnt].to=v;e[cnt].w=w;e[cnt].next=h[u]; h[u]=cnt;cnt++;
}void dij(int x){//堆优化 for(int i=1;i<=n;++i) {dis[i]=inf;}dis[x]=0;PII now;now.first=dis[x];now.second=x;q.push(now);while(q.size()){now=q.top();q.pop();int minn=now.first;int k=now.second;if(v[k]==1) continue;v[k]=1;for(int i=h[k];i!=-1;i=e[i].next){int u=e[i].to;if(dis[u]>minn+e[i].w){dis[u]=minn+e[i].w;now.first=dis[u];now.second=u;q.push(now); }}}
}int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);memset(h,-1,sizeof h);int s;//scanf("%d %d %d",&n,&m,&s);cin>>n>>m>>s; int x,y,w; for(int i=1;i<=m;++i){//scanf("%d %d %d",&x,&y,&w);cin>>x>>y>>w;add(x,y,w); } dij(s);for(int i=1;i<=n;++i){//printf("%d ",dis[i]);cout<<dis[i]<<" ";}return 0;
} 

2

[P8802 蓝桥杯 2022 国 B] 出差 - 洛谷

#include<bits/stdc++.h>
using namespace std;
using ll=long long ;
int n,m,cnt;
int h[1005],c[1005];
int flag[1005];//标记数组 
struct Edge{int to,w,next;
}e[20005];//无向图开两倍空间
int dis[1005]; 
typedef pair<int,int> PII;
priority_queue<PII,vector<PII>,greater<PII>> q;
void add(int u,int v,int w){e[cnt].to=v;e[cnt].w=w;e[cnt].next=h[u];h[u]=cnt;cnt++;
}void dij(int s){dis[s]=0;PII now,next;int u,v,w;now.first=dis[s];now.second=s;q.push(now);while(!q.empty()){now=q.top();q.pop();u=now.second;if(flag[u]==1) continue;flag[u]=1;for(int i=h[u];i!=-1;i=e[i].next){v=e[i].to;w=e[i].w;if(dis[v]>dis[u]+w){dis[v]=dis[u]+w;next.first=dis[v];next.second=v;q.push(next);}}} 
}int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); cin>>n>>m;memset(h,-1,sizeof h); memset(dis,0x3f,sizeof dis);//dis[i]=0x3f3f3f3f按字节赋值 for(int i=1;i<=n;++i){cin>>c[i];}int u,v,w;for(int i=1;i<=m;++i){cin>>u>>v>>w;add(u,v,w+c[v]);//u---->v   点权加入边权里 add(v,u,w+c[u]);//v---->u}dij(1);cout<<dis[n]-c[n]<<endl; //最后减去终点点权 return 0;
} 

3

P1462 通往奥格瑞玛的道路 - 洛谷

#include<bits/stdc++.h>
using namespace std;
using ll=long long ;
int n,m,b,cnt=0;
int h[10005],f[10005];
int flag[10005];//标记数组 
struct Edge{int to,w,next;
}e[100005];//无向图开两倍空间
int dis[10005]; 
typedef pair<int,int> PII;
priority_queue<PII,vector<PII>,greater<PII>> q;
void add(int u,int v,int w){e[cnt].to=v;e[cnt].w=w;e[cnt].next=h[u];h[u]=cnt;cnt++;
}bool dij(int s,int maxx){if(maxx<f[s]) return false; memset(dis,0x3f,sizeof dis);memset(flag,0,sizeof flag);PII now,next;int u,v,w;dis[s]=0;now.first=dis[s];now.second=s;q.push(now);while(!q.empty()){now=q.top();q.pop();u=now.second;if(flag[u]==1) continue;flag[u]=1;for(int i=h[u];i!=-1;i=e[i].next){v=e[i].to;w=e[i].w;if(f[v]<=maxx&&dis[v]>dis[u]+w){dis[v]=dis[u]+w;next.first=dis[v];next.second=v;q.push(next);}}} return dis[n]<=b;
}int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); cin>>n>>m>>b;memset(h,-1,sizeof h); int l=0x3f3f3f3f,r=-0x3f3f3f3f; for(int i=1;i<=n;++i){cin>>f[i];r=max(r,f[i]);l=min(l,f[i]);}int u,v,w;for(int i=1;i<=m;++i){cin>>u>>v>>w;if(u==v) continue;//有自环 add(u,v,w);add(v,u,w);}if(dij(1,0x3f3f3f3f)==0){cout<<"AFK"<<endl;return 0;}//二分求答案int mid=0,ans=0;while(l<=r){mid=(l+r)/2;if(dij(1,mid)){ans=mid;r=mid-1;}else{l=mid+1;}} cout<<ans<<endl;return 0;
} 

文章转载自:

http://oQdshy33.xmrmk.cn
http://iOyFKMH5.xmrmk.cn
http://tytovXMG.xmrmk.cn
http://jw0oo58b.xmrmk.cn
http://T21f46vL.xmrmk.cn
http://iMc6nily.xmrmk.cn
http://339zylRn.xmrmk.cn
http://UnSOYNyv.xmrmk.cn
http://CfN8xX37.xmrmk.cn
http://sJ3ZCbcp.xmrmk.cn
http://h44Cnlh7.xmrmk.cn
http://wq4Rmspk.xmrmk.cn
http://maaBvNVH.xmrmk.cn
http://Z78Qu51z.xmrmk.cn
http://VB62Zx0j.xmrmk.cn
http://LoJ0Iugr.xmrmk.cn
http://yDVH5ezm.xmrmk.cn
http://2w4EySdk.xmrmk.cn
http://XB19mTPq.xmrmk.cn
http://yeicVVzg.xmrmk.cn
http://F0jOTwoi.xmrmk.cn
http://x7Ag01tC.xmrmk.cn
http://7Bn78NCB.xmrmk.cn
http://8o4NAD0O.xmrmk.cn
http://saThHy7j.xmrmk.cn
http://Yl3DoRy3.xmrmk.cn
http://J5ZpParK.xmrmk.cn
http://lXjv3xVa.xmrmk.cn
http://SnsALQY8.xmrmk.cn
http://GT0xf3KV.xmrmk.cn
http://www.dtcms.com/wzjs/663929.html

相关文章:

  • 网站制作有限长治网站建设
  • 网站建设信息推荐网页设计师培训费用图
  • 龙岗 营销型网站建设高德地图怎么没有菲律宾位置
  • 网站服务器有哪几种华为手机价格大全
  • 朋友找做网站都要收定金上海企业网站开发
  • 建网站的平台最好看的2018中文在线观看
  • 网站建设玖金手指花总nginx 搭建wordpress
  • 网站做外链好不好在线制作图片及图片处理工具免费
  • 网站建设 岗位职责 智联辽宁建设工程网
  • 创建集团上海公司网站住房城乡建设门户网站
  • 网站建设使用的基本技术网站开发验收报告模板
  • 网站生成手机页面报价网站系统
  • 建购物的网站需要多少钱珠海新盈科技有限公 网站建设
  • 网站建设内链网络营销策略内容
  • 高校门户网站系统网站右侧浮动广告
  • 南昌做网站费用企业网站设计与规划论文
  • 做3d图的网站有哪些软件seo搜索引擎优化方案怎么写
  • 廊坊网站建设多少钱深圳做网站报价
  • 怎样可以提升自己的网站wordpress 上传安装不了
  • 个人网站推广方案wordpress官方中文版
  • 潮州有没有做网站的人金融商城快捷申请网站模板下载
  • 医院的网站建设目标开发公司退房款代理词
  • 全景精灵网站建设网站开发工具比较
  • 沈阳网站建设培训提高美誉度的网络营销方式
  • wordpress子目录 多站点网站建设后怎么做主页
  • 怎样让百度收录网站优化教程网官网
  • 3d网站怎么做discuz上传wordpress
  • 商务网站的规划流程wordpress开启静态网页
  • 烟台百度网站建设wordpress弹窗登录
  • 简单的个人网站下载免费注册企业