HDU 1548 A strange lift (Dijkstra)
2017-02-11 09:54
323 查看
https://vjudge.net/problem/HDU-1548
题意:
电梯每层有一个不同的数字,例如第n层有个数字k,那么这一层只能上k层或下k层,但是不能低于一层或高于n层,给定起点与终点,要求出最少要按几次键。
思路:
可以用BFS,也可以用迪杰斯特拉算法。
题意:
电梯每层有一个不同的数字,例如第n层有个数字k,那么这一层只能上k层或下k层,但是不能低于一层或高于n层,给定起点与终点,要求出最少要按几次键。
思路:
可以用BFS,也可以用迪杰斯特拉算法。
#include<iostream> #include<cstring> #include<algorithm> #include<vector> using namespace std; #define INF 100000000 int n, A, B; int map[205][205]; int vis[205]; int d[205]; int num[205]; void Dijkstra() { memset(vis, 0, sizeof(vis)); for (int i = 1; i <= n; i++) { num[i] = map[A][i]; } num[A] = 0; vis[A] = 1; for (int i = 1; i < n; i++) { int min = INF; int pos; for (int j = 1; j <= n; j++) { if (num[j] < min && !vis[j]) { pos = j; min = num[j]; } } if (min == INF) break; vis[pos] = 1; for (int j = 1; j <= n; j++) { if (num[pos] + map[pos][j] < num[j] && !vis[j]) num[j] = num[pos] + map[pos][j]; } } if (num[B] == INF) printf("-1\n"); else printf("%d\n", num[B]); } int main() { //freopen("D:\\txt.txt", "r", stdin); int a; while (scanf("%d", &n) && n) { scanf("%d%d", &A, &B); for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) map[i][j] = INF; for (int i = 1; i <= n; i++) { scanf("%d", &a); if (i + a <= n) map[i][i + a] = 1; if (i - a >= 0) map[i][i - a] = 1; } Dijkstra(); } return 0; }
相关文章推荐
- HDU 1548 A strange lift(最短路问题Dijkstra实现)
- 【BFS/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、Dijkstra)
- hdu 1548 A strange lift(Dijkstra+合理转换)
- HDU 1548 A strange lift(构造+最短路Dijkstra)
- 【Dijkstra】-HDU-1548-A strange lift
- hdu 1548 A strange lift(bfs||dijkstra)
- [HDU 1548]A Strange Lift[Dijkstra最短路]
- HDU 1548 A strange lift(Dijkstra、BFS、DP)
- HDU 1548 A strange lift(Dijkstra、BFS、DP)
- HDU_1548 A strange lift(最短路 Dijkstra解法)
- HDU - 1548 A strange lift(Dijkstra)
- HDU 1548 A strange lift(Dijkstra,简单BFS)
- hdu 1548 A strange lift
- 杭电 HDU 1548 A strange lift
- 【HDU】 1548 A strange lift
- HDU 1548 A strange lift(简单BFS)