hdu 1548 A strange lift 最短路(spfa)
2014-11-30 20:57
441 查看
#include<stdio.h> #include<string.h> #include<algorithm> #include<queue> using namespace std; #define N 205 #define maxx 99999999 int a ; int dis ; int vis ; int st, ed; int n; int c ; void spfa() { memset(vis, 0, sizeof(vis)); queue<int> q; while( !q.empty() ) q.pop(); dis[st] = 0; vis[st] = 1; q.push(st); while( !q.empty() ) { int now = q.front(); q.pop(); vis[now] = 0; for( int i = 1; i <= n; i++) { if( dis[now] + a[now][i] < dis[i] ) { dis[i] = dis[now] + a[now][i]; if( !vis[i] ) { vis[i] = 1; q.push(i); } } } } if(dis[ed] != maxx) printf("%d\n", dis[ed]); else puts("-1"); } int main() { while(~scanf("%d", &n) && n) { scanf("%d%d", &st, &ed); for( int i = 1; i <= n; i++ ) { dis[i] = maxx; for( int j = 1; j <= n; j++ ) a[i][j] = maxx; } for( int i = 1; i <= n; i++) { scanf("%d", &c[i]); if( i + c[i] <= n ) { a[i][c[i] + i] = 1; } if( i - c[i] >= 1 ) { a[i][i - c[i]] = 1; } } spfa(); } return 0; }
相关文章推荐
- HDU 1548 A strange lift【不错的最短路,spfa】
- HDU-1548 A strange lift(最短路[Spfa || BFS])
- [HDU 1548]A Strange Lift[Dijkstra最短路]
- hdu 1548 A strange lift(最短路)
- HDU 1548 A strange lift (最短路/Dijkstra)
- HDU 1548 A strange lift(构造+最短路Dijkstra)
- hdu 1548-A strange lift-最短路-dijkstra
- HDU 1548 A strange lift (简单最短路或BFS)
- hdu 1548 A strange lift(搜索or最短路)
- hdu 1548 A strange lift(最短路或DFS)
- hdu 1548 A strange lift (bfs、最短路)
- HDU--杭电--1548--A strange lift--最短路
- HDU 1548---A strange lift(搜索&&最短路)
- HDU_1548 A strange lift(最短路 Dijkstra解法)
- 【SPFA】hdu 1548 A strange lift
- HDU 1548 A strange lift(最短路或BFS)
- HDU 1548 A strange lift(最短路、BFS)
- HDU-1548 A strange lift(单源最短路 或 BFS)
- HDU 1548 A strange lift (BFS或最短路)
- hdu 1548 A strange lift(最短路)