专题四 · 1011
来源:互联网 发布:2017淘宝捉猫猫怎么玩 编辑:程序博客网 时间:2024/05/29 04:44
代码及解释
#include <algorithm>#include <limits.h>#include <stdio.h>#include <string.h>// 最后一道 ACM 题// 死活 A 不过去// 然后我就看了别人的代码 A 了// _:(´°ω°`」 ∠):_const int SIZE = 2000;int T, S, D, n;int map[SIZE][SIZE];int vis[SIZE], cast[SIZE];int s[SIZE], e[SIZE];void Dijkstra() { int i, j, minn, pos = 0; memset(vis, 0, sizeof(vis)); vis[0] = 1; for (i = 0; i <= n; i++) cast[i] = map[0][i]; for (i = 1; i <= n; i++) { minn = INT_MAX; for (j = 1; j <= n; j++) { if (cast[j] < minn && !vis[j]) { pos = j; minn = cast[j]; } } vis[pos] = 1; for (j = 1; j <= n; j++) { if (cast[pos] + map[pos][j] < cast[j] && !vis[j]) cast[j] = cast[pos] + map[pos][j]; } }}int main() { int i, j, x, y, z; while (~scanf("%d%d%d", &T, &S, &D)) { n = 0; for (i = 0; i < SIZE; i++) { for (j = 0; j < SIZE; j++) map[i][j] = INT_MAX; map[i][i] = 0; } while (T--) { scanf("%d%d%d", &x, &y, &z); n = std::max(std::max(n, x), y); if (z < map[x][y]) map[x][y] = map[y][x] = z; } int minn = INT_MAX; for (i = 0; i < S; i++) { scanf("%d", &s[i]); map[0][s[i]] = map[s[i]][0] = 0; } for (i = 0; i < D; i++) scanf("%d", &e[i]); Dijkstra(); for (i = 0; i < D; i++) minn = std::min(minn, cast[e[i]]); printf("%d\n", minn); } return 0;}
0 0
- 专题四 · 1011
- 专题四1011
- 专题四1011
- 1011-K专题四
- 专题四 · 1001
- 专题四 · 1002
- 专题四 · 1003
- 专题四 · 1004
- 专题四 · 1006
- 专题四 · 1005
- 专题四 · 1008
- 专题四 · 1009
- 专题四 · 1010
- 3G专题四
- LDAP专题(四)
- 专题四1003
- 专题四1003
- 专题四 Problem A
- C++虚函数简单总结
- AI 《A PROPOSAL FOR THE DARTMOUTH SUMMER RESEARCH PROJECT ON ARTIFICIAL INTELLIGENCE》读后总结
- 集合上的欧式投影或者欧式投影到一个集合
- python-正则表达式
- Unity:iOS可执行程序超过80MB问题及各版本IL2CPP对比
- 专题四 · 1011
- 1010-J专题四
- 在MFC中对于位图的理解
- 为什么要使用缓存?用OSCache提升J2EE系统运行性能
- Glide图片加载库的使用(一)
- 网页右侧悬浮广告
- Locale和charset的关系
- 什么是嵌入式?嵌入式就业方向?需要具备的技能?
- directive