蓝桥杯 最短路 spfa
2016-03-07 15:56
447 查看
问题描述
给定一个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,保证从任意顶点都能到达其他所有顶点。
题解: 前向星 存图 SPFA
View Code
给定一个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,保证从任意顶点都能到达其他所有顶点。
题解: 前向星 存图 SPFA
#include<iostream> #include<cstring> #include<cstdio> #include<map> #include<queue> using namespace std; struct node { int next; int to; int we; } edge[200005]; int nedge=0; int pre[20005],vis[20005],d[20005]; int n,m; int aa,bb,cc; int now; queue<int>q; void add (int a,int b ,int c) { nedge++; edge[nedge].to=b; edge[nedge].we=c; edge[nedge].next=pre[a]; pre[a]=nedge; } void spfa() { for(int i=1;i<=n;i++) { vis[i]=0; d[i]=0xfffffff; } q.push(1); vis[1]=1; d[1]=0; while(!q.empty()) { now=q.front(); q.pop(); vis[now]=0; for(int i=pre[now];i!=0;i=edge[i].next) { int mm=edge[i].to; if(d[now]+edge[i].we<d[mm]) { d[mm]=d[now]+edge[i].we; if(!vis[mm]) { vis[mm]=1; q.push(mm); } } } } } int main() { scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) { pre[i]=0; } memset(edge,0,sizeof(edge)); for(int i=1;i<=m;i++) { scanf("%d %d %d",&aa,&bb,&cc); add(aa,bb,cc); } spfa(); for(int i=2;i<=n;i++) printf("%d\n",d[i]); return 0; }
View Code
相关文章推荐
- activemq安全设置
- Android加载Gif和ImageView的通用解决方案:android-gif-drawable(1)
- SAP 供应链需求计划管理研讨会
- 如何生成一个合适的hashcode方法
- CSDN学院系统升级公告
- C#代码片段 在工作线程中刷新主界面线程的进度条显示
- 使用高德定位SDK实时定位
- java字符串加密解密
- android框架
- 读取等待 纯H5 JS
- 0019-前后台数据传递
- 矩阵相乘优化算法实现讲解
- android studio的上手体验--设置篇
- 双乾支付
- css 实现换行的样式
- 通过js来修改div的style(background,border,。。。。。。。)
- oracle执行sql文件
- 根据颜色生成对应的image
- Android java List 转Json格式
- appkey 和 secret key & token