hihoCoder#1093 最短路径·三:SPFA算法
2015-04-06 20:17
330 查看
原题地址
宽搜+剪枝,不是说好了适用于稀疏矩阵的嘛,怎么题目的测试数据边数达到10^6。。。不科学
代码:
宽搜+剪枝,不是说好了适用于稀疏矩阵的嘛,怎么题目的测试数据边数达到10^6。。。不科学
代码:
#include <iostream> #include <cstring> #include <map> using namespace std; #define MAX_POINT 100008 #define MAX_EDGE 1000008 int N, M, S, T; int p[MAX_POINT]; int q[MAX_POINT]; int d[MAX_POINT]; map<int, map<int, int> > g; int head, tail; void spfa() { for (int i = 0; i < N; i++) p[i] = -1; memset(d, 1, sizeof(d)); head = tail = 0; d[S] = 0; p[S] = tail; q[tail++] = S; while (head < tail) { int s = q[head++]; for (auto t : g[s]) { int len = d[s] + t.second; if (len < d[t.first]) { d[t.first] = len; if (p[t.first] < 0) { p[t.first] = tail; q[tail++] = t.first; } } } p[s] = -1; } } int main() { scanf("%d%d%d%d", &N, &M, &S, &T); for (int i = 0; i < M; i++) { int a, b, len; scanf("%d%d%d", &a, &b, &len); if (!g[a][b]) g[a][b] = g[b][a] = len; else g[a][b] = g[b][a] = min(g[a][b], len); } spfa(); printf("%d\n", d[T]); return 0; }
相关文章推荐
- #1093 : 最短路径·三:SPFA算法 hihocoder SPFA
- hihoCoder#1093 最短路径·三-SPFA算法
- [hihoCoder] #1093 : 最短路径·三:SPFA算法
- hihocoder #1093 : 最短路径·三:SPFA算法
- 图论-最短路径--3、SPFA算法O(kE)
- 最短路径 之 SPFA算法
- (最短路径算法整理)dijkstra、floyd、bellman-ford、spfa算法模板的整理与介绍
- 最短路径——SPFA算法
- (最短路径算法整理)dijkstra、floyd、bellman-ford、spfa算法模板的整理与介绍
- 单源最短路径之SPFA算法实现
- hihocoder#1093 : 最短路径·三:SPFA算法
- 最短路径 之 SPFA算法
- 最短路径SPFA算法
- 邻接表实现 单源最短路径SPFA算法 poj1511
- 可以处理负权的单源最短路径的SPFA算法带图详解(自己画的图)
- 最短路径——SPFA算法
- 单源最短路径-spfa算法
- 最短路径 之 SPFA算法
- 题目1 : 最短路径·三:SPFA算法
- HIHO #1093 : 最短路径·三:SPFA算法