HDU - 1596 find the safest road (最短路水题)
2015-08-01 00:36
435 查看
题目大意:找出两点见安全系数最高的那条路
解题思路:直接最短路解决
解题思路:直接最短路解决
[code]#include <cstdio> #include <cstring> #include <cmath> #include <queue> #define INF 0x3f3f3f3f #define N 1010 #define M 1000010 #define esp 1e-8 using namespace std; struct Node { int to, next; double len; }node[M]; int n, m, cnt, s, e, head ; bool vis ; double d , dis ; void init() { double x; for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) { scanf("%lf", &dis[i][j]); } } bool dij() { bool flag = false;; for (int i = 1; i <= n; i++) { d[i] = 0.0; vis[i] = false; } d[s] = 1.0; for (int i = 1; i <= n - 1; i++) { int x; double tmp = 0.0; for (int j = 1; j <= n; j++) { if (!vis[j] && d[j] - tmp > esp) { tmp = d[j]; x = j; } } if (x == e) return true; vis[x] = true; for (int j = 1; j <= n; j++) { if (!vis[j] && d[x] * dis[x][j] - d[j] > esp) { d[j] = d[x] * dis[x][j]; if (j == e) flag = true; } } } return flag; } void solve() { scanf("%d", &m); int x, y; for (int i = 0; i < m; i++) { scanf("%d%d", &s, &e); if (!dij()) printf("What a pity!\n"); else printf("%.3lf\n", d[e]); } } int main() { while (scanf("%d", &n) != EOF) { init(); solve(); } return 0; }
相关文章推荐
- jquery easyui datagrid实现数据修改
- ReferenceError: Invalid assignment left-hand side
- HDU1664 Different Digits(bfs +数论剪枝)
- fedora 20升级至22 无线网卡失效 解决办法
- js学习小总结
- Css样式表 (常用基础)
- HTML防止中文乱码
- js常用正则表达式
- 浅谈JavaScript中setInterval和setTimeout的使用问题
- Web 设计师不可错过的 25+ CSS 工具
- jsp引用带参数的js文件,例如 <script src="a.js?ctxpath=${base"
- js获取PC机系统当前时间
- AngularJS Step by Step (2) : 一个数据绑定的例子
- AngularJS Step by Step (1) : Hello Angular
- Revolution Responsive jQuery Slider滑动幻灯片插件
- CSS布局——元素浮动与定位篇
- jquery属性选择器
- js对象字面量
- 用H5的canvas做时钟
- JavaScript中==和===的区别