HDU - 2066 - 一个人的旅行
来源:互联网 发布:妖姬葵 知乎 编辑:程序博客网 时间:2024/05/20 13:41
HDU - 2066 - 一个人的旅行
初识最短路算法看到的第一条例题。
题目
个人解法
其实就是套用了Dijkstra的算法模版,也算是第一次尝试吧。
PS:个人感觉就是一种贪心的思想。
Ac代码
// 2066 - 一个人的旅行const int INF = 0x3f3f3f3f;const int maxn = 1010;int cost[maxn][maxn];int des[maxn];int d[maxn] = {0};bool used[maxn];int T, S, D;void dijkstra() { fill(d, d + maxn, INF); fill(used, used + maxn, false); d[0] = 0; for (; ; ) { int v = -1; for (int u = 0; u < maxn; u++) { if (!used[u] && (v == -1 || d[u] < d[v])) { v = u; } } if (v == -1) { break; } used[v] = true; for (int u = 0; u < maxn; u++) { d[u] = min(d[u], d[v] + cost[v][u]); } } int Min = INF; for (int i = 0; i < D; i++) { Min = min(d[des[i]], Min); } cout << Min << endl;}int main() { int from, to, time; while (~scanf("%d%d%d", &T, &S, &D)) { for (int i = 0; i < maxn; i++) { for (int j = 0; j < maxn; j++) { cost[i][j] = INF; } } while (T--) { scanf("%d%d%d", &from, &to, &time); if (time < cost[from][to]) { cost[to][from] = cost[from][to] = time; } } while (S--) { scanf("%d", &to); cost[0][to] = cost[to][0] = 0; } for (int i = 0; i < D; i++) { scanf("%d", &des[i]); } dijkstra(); } return 0;}
总结
第一次写解题报告,还不知道该怎么写,就照着大佬们博客的样子依葫芦画瓢
1 0
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行
- HDU-2066 一个人的旅行
- Hdu-2066 一个人的旅行
- HDU 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行
- hdu 2066 一个人的旅行
- hdu 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066 一个人的旅行
- hdu 2066 一个人的旅行
- HDU 2066 一个人的旅行
- HDU 2066 一个人的旅行
- HDU 2066 一个人的旅行
- hdu 2066(一个人的旅行)
- JavaScript——BOM应用
- 数据结构读书笔记
- matlab实现ICP(3D迭代最近点算法)
- UOJ 74 [UR #6]破解密码
- 数据库系统概论学习笔记(一):基本概念
- HDU - 2066 - 一个人的旅行
- c# 分页打印多行文本
- UVA 1515 Pool construction(最小割)
- 洛谷 1303——A*B Problem
- 一级路由器静态路由访问二级路由器的方法二
- 【PAT】1091. Acute Stroke
- Linux玩家的福音
- 回顾Activity的启动模式及其应用场景
- 500. Keyboard Row