HDU - 2145 zz's Mysterious Present (最短路)
2015-07-31 23:48
323 查看
题目大意:有一个人,办了一个party,先到的有礼物。如果有多个人同时到达,就去家离得最远的那个,如果还是多个人同时到达,就去那个编号最大的
解题思路:最短路水题。。。
解题思路:最短路水题。。。
[code]#include <cstdio> #include <cstring> #include <algorithm> #include <queue> #include <cmath> using namespace std; #define N 310 #define INF 0x3f3f3f3f struct People { int len, id, start, speed; double time; }P ; int dis , d ; int n, m, k, zz; bool vis ; int cmp(People a, People b) { if (fabs(a.time - b.time) < 1e-7) { if (a.len == b.len) { return a.id > b.id; } else return a.len > b.len; } else return a.time < b.time; } void init() { memset(dis, 0x3f, sizeof(dis)); for (int i = 1; i <= n; i++) dis[i][i] = 0; int x, y, z; for (int i = 0; i < k; i++) { scanf("%d%d%d", &x, &y, &z); dis[y][x] = min(dis[y][x], z); } scanf("%d", &zz); for (int i = 1; i <= m; i++) { scanf("%d", &P[i].start); } for (int i = 1; i <= m; i++) { scanf("%d", &P[i].speed); } } void Dijkstra() { memset(vis, 0, sizeof(vis)); for (int i = 1; i <= n; i++) d[i] = dis[zz][i]; vis[zz] = 1; d[zz] = 0; for (int i = 2; i <= n; i++) { int x, t = INF; for (int j = 1; j <= n; j++) if (!vis[j] && d[j] < t) { t = d[j]; x = j; } if (t == INF) break; vis[x] = 1; for (int j = 1; j <= n; j++) { if (d[j] > d[x] + dis[x][j]) { d[j] = d[x] + dis[x][j]; } } } } void solve() { Dijkstra(); for (int i = 1; i <= m; i++) { if (d[P[i].start] == INF) { P[i].time = INF; P[i].len = INF; P[i].id = i; } else { P[i].time = d[P[i].start] * 1.0 / P[i].speed; P[i].len = d[P[i].start]; P[i].id = i; } } sort(P + 1, P + m + 1, cmp); if (P[1].time == INF) printf("No one\n"); else printf("%d\n", P[1].id); } int main() { while (scanf("%d%d%d", &n, &m, &k) != EOF) { init(); solve(); } return 0; }
相关文章推荐
- 多租户--EclipseLink实现
- _DataStructure_C_Impl:循环单链表
- 泛型
- 实习最后一天(项目验收)
- hihoCoder 1044 状态压缩·一
- CSS布局——元素浮动与定位篇
- kernel中常用数据结构之kfifo(改造为ring buffer)
- UVA 1606 Amphiphilic Carbon Molecules 两亲性分子 (极角排序或叉积,扫描法)
- 不要温柔地走入promise
- Ionic中的$ionicModal使用方法
- kernel中常用数据结构之链表
- 顺序表应用举例
- (转载)Objective-c的@property 详解
- 健康顺口溜
- hdu 5336 XYZ and Drops 【BFS模拟】
- 转:OpenJDK和SunJDK的区别和联系
- hihoCoder 1039 字符消除
- Aircrack-ng支持网卡列表(下)
- 云计算在企业中的应用(2)
- hd 2187