HDOJ 2112 HDU Today (Dijstra 此题略坑)
2016-02-04 14:36
435 查看
点击打开链接
此题坑点:
1、 无向图 公交车两个站点间可来回
2、可能有起点终点不出现在后面的公交站点的情况 计算最短路时必须包括所有的提到的站点
3、起点等于终点的情况输出的是0
另外之前写的程序还有几个bug没有记录,顺便也提一下:
1、EOF = -1 Ctrl + Z 读入 EOF
2、min max最好不要当变量
3、C++ 区分大小写,大小写不同就是不同的变量
4、定义较大的数组要在主函数外
此题坑点:
1、 无向图 公交车两个站点间可来回
2、可能有起点终点不出现在后面的公交站点的情况 计算最短路时必须包括所有的提到的站点
3、起点等于终点的情况输出的是0
另外之前写的程序还有几个bug没有记录,顺便也提一下:
1、EOF = -1 Ctrl + Z 读入 EOF
2、min max最好不要当变量
3、C++ 区分大小写,大小写不同就是不同的变量
4、定义较大的数组要在主函数外
#include<cstdio> #include<cstring> #include<iostream> #include<string> #include<map> const int INF = 0x3f3f3f3f; using namespace std; int c[155][155]; bool s[155]; int dist[155]; int main() { map <string, int> name; int cnt, u, a, b, time, mindist, v0, t0, n; string sv, st, sa, sb; while (~scanf("%d", &n) && n != -1) { getchar(); cnt = 0; name.clear(); cin >> sv >> st; if (name.find(sv) == name.end()) { cnt++; name[sv] = cnt; } if (name.find(st) == name.end()) { cnt++; name[st] = cnt; } for (int i = 1; i <= 150; i++) for (int j = 1; j <= 150; j++) c[i][j] = INF; for (int i = 1; i <= n; i++) { cin >> sa >> sb >> time; if (name.find(sa) != name.end()) a = name[sa]; else { cnt++; name[sa] = cnt; a= cnt; } if (name.find(sb) != name.end()) b = name[sb]; else { cnt++; name[sb] = cnt; b = cnt; } if (time < c[a][b]) { c[a][b] = time; c[b][a] = time; } } v0 = name[sv]; t0 = name[st]; for (int i = 1; i <= cnt; i++) { s[i] = false; dist[i] = c[v0][i]; } s[v0] = true; dist[v0] = 0; for (int i = 1; i < cnt; i++) { u = v0; mindist = INF; for (int j = 1; j <= cnt; j++) if (!s[j] && dist[j] < mindist) { mindist = dist[j]; u = j; } s[u] = true; for (int j = 1; j <= cnt; j++) if (!s[j] && c[u][j] != INF) { if (c[u][j] + dist[u] <dist[j]) dist[j] = c[u][j] + dist[u]; } } if (dist[t0] != INF) printf("%d\n", dist[t0]); else printf("-1\n"); } return 0; }
相关文章推荐
- JavaScript
- (转载)jsp与servlet之间页面跳转及参数传递实例
- javascript一些小例子总结,持续更新...
- 返回Json数据中带有<pre></pre>标签解决方法
- C# - JSON详解
- 外部js书写规则
- javascript脚本从载入浏览器到显示执行的过程解析
- javascript中函数声明、变量声明以及变量赋值之间的关系与影响
- HDOJ 1874 畅通工程续 (Dijstra + 重边判断)
- Validation of Chinese ID Numbers using JavaScript
- JS中找不到控件-已解决
- js推断指定函数、变量是否存在的方法
- JS将字符串首字母变为大写,其余为小写
- js词法分析
- JavaScript类型、值和变量2
- 使用JSON进行数据传输的总结
- [LeetCode][JavaScript]Odd Even Linked List
- 为了提高性能,如何动态加载JS文件
- 关于javaScript中的“===”,"!=="和"==","!="
- AJAX 跨域请求 - JSONP获取JSON数据