博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蓝桥杯 算法训练 最短路 [ 最短路 bellman ]
阅读量:6900 次
发布时间:2019-06-27

本文共 1678 字,大约阅读时间需要 5 分钟。

  算法训练 最短路  
时间限制:1.0s   内存限制:256.0MB
   
锦囊1
 
锦囊2
 
锦囊3
 
问题描述

给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。

输入格式

第一行两个整数n, m。

接下来的m行,每行有三个整数u, v, l,表示u到v有一条长度为l的边。

输出格式
共n-1行,第i行表示1号点到i+1号点的最短路。
样例输入
3 3 1 2 -1 2 3 -1 3 1 2
样例输出
-1 -2
数据规模与约定

对于10%的数据,n = 2,m = 2。

对于30%的数据,n <= 5,m <= 10。

对于100%的数据,1 <= n <= 20000,1 <= m <= 200000,-10000 <= l <= 10000,保证从任意顶点都能到达其他所有顶点。

 

题解:

由于有环,有负权,故用bellman-ford

由于数据有点大,故用队列进行优化

506328 609738062@qq.com 04-07 17:24 1.055KB C++ 正确 100 171ms 4.003MB

 

1 #include 
2 #include
3 #include
4 #include
5 #include
6 7 using namespace std; 8 9 const int N = 20005;10 const int inf = 0x3f3f3f3f;11 12 typedef struct13 {14 int to;15 int dis;16 }PP;17 18 int n,m;19 vector
bian[N];20 int v[N];21 int vis[N];22 23 void bellman()24 {25 queue
que;26 int te,nt;27 que.push(1);28 vis[1]=1;29 int i;30 int dis;31 while(que.size()>=1)32 {33 te=que.front();34 que.pop();35 for(i=0;i
v[te]+dis){39 v[nt]=v[te]+dis;40 if(vis[nt]==0){41 vis[nt]=1;42 que.push(nt);43 }44 }45 }46 vis[te]=0;47 }48 }49 50 int main()51 {52 int i,j;53 int uu,vv,l;54 PP te;55 //freopen("data.in","r",stdin);56 //while(scanf("%d%d",&n,&m)!=EOF)57 scanf("%d%d",&n,&m);58 {59 memset(vis,0,sizeof(vis));60 fill(v,v+n+1,inf);61 v[1]=0;62 for(i=0;i<=n;i++){63 bian[i].clear();64 //printf(" i=%d v=%d\n",i,v[i]);65 }66 for(i=1;i<=m;i++){67 scanf("%d%d%d",&uu,&vv,&l);68 te.to=vv;te.dis=l;69 bian[uu].push_back(te);70 }71 bellman();72 for(i=2;i<=n;i++){73 printf("%d\n",v[i]);74 }75 }76 return 0;77 }

 

转载于:https://www.cnblogs.com/njczy2010/p/4398875.html

你可能感兴趣的文章
Django实战(7):改造ProductList界面
查看>>
大专生自学Java到找到工作的心得
查看>>
CI框架
查看>>
python下使用protobuf
查看>>
少搞一点 对象, 多搞一点 文本
查看>>
首页logo的代码标志性写法,方便SEO
查看>>
安装完vs2008中文的sp1后,智能提示变成英文.
查看>>
Scala.Actor实践心得与设计思想
查看>>
代码可读性的改良
查看>>
网页调试:myeclipse修改javascript代码后,执行没有变化呀
查看>>
Linux使用pam_tally2.so模块限制登录失败锁定时间
查看>>
搭建Docker集群测试环境--swarm、docker-compose、portainer
查看>>
UVA 12167 Proving Equivalences 强连通分量
查看>>
python 之字符编码
查看>>
jquery操作select(增加,删除,清空)
查看>>
Ruby 交互式编程工具——irb
查看>>
Win7 VS2017 Boost Python入门
查看>>
【转】 [UnityUI]UGUI射线检测
查看>>
hnsdfz -- 6.21 -- day7
查看>>
如何做接口测试
查看>>