HDU 2145 (A strange lift) 最短路(Dijkstra)
来源:互联网 发布:bat程序员工资 编辑:程序博客网 时间:2024/04/28 01:51
没什么可以注意的就是终点当成起点,注意floyd会超时,因为我一开始就是用floyd写的但我不知道为毛300*300*300会超时。
还有一点要注意的就是结构题快排的cmp函数的内部结构。
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define inf 0x7ffffffusing namespace std;const int N=300+5;int map[N][N],p[N],spd[N];int n,m,k;int vis[N],dis[N];struct node{double tim;int len;int id;}V[N];bool cmp(node a,node b){if(a.tim==b.tim){if(a.len==b.len){return a.id>b.id;}else return a.len>b.len;}else return a.tim<b.tim;}void dijkstra(int ed){memset(vis,0,sizeof(vis));for(int i=1;i<=n;i++){dis[i]=map[ed][i];}vis[ed]=1;dis[ed]=0;for(int i=2;i<=n;i++){int temp;int Min=inf;for(int j=1;j<=n;j++){if(!vis[j]&&Min>dis[j]){temp=j;Min=dis[j];}}if(Min==inf) break;vis[temp]=1;for(int j=1;j<=n;j++){if(!vis[j]&&map[temp][j]<inf){if(dis[j]>dis[temp]+map[temp][j]){dis[j]=dis[temp]+map[temp][j];}}}}}int main(){while(~scanf("%d%d%d",&n,&m,&k)){int ed;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==j) map[i][j]=0;else map[i][j]=inf;}}for(int i=1;i<=k;i++){int u,v,w;scanf("%d%d%d",&u,&v,&w);if(w<map[v][u]){map[v][u]=w;}}scanf("%d",&ed);dijkstra(ed);for(int i=1;i<=m;i++){scanf("%d",&p[i]);}for(int i=1;i<=m;i++){scanf("%d",&spd[i]);}for(int i=1;i<=m;i++){if(dis[p[i]]>=inf){V[i].tim=inf;V[i].len=inf;V[i].id=i;}else{V[i].tim=dis[p[i]]*1.0/spd[i];V[i].len=dis[p[i]];V[i].id=i;}}sort(V+1,V+1+m,cmp);if(V[1].tim==inf) printf("No one\n");else printf("%d\n",V[1].id);}return 0;}
0 0
- HDU 2145 (A strange lift) 最短路(Dijkstra)
- HDU 1548 A strange lift(构造+最短路Dijkstra)
- HDU 1548 A strange lift(最短路问题Dijkstra & bfs两种解法)
- hdu 1548-A strange lift-最短路-dijkstra
- [HDU 1548]A Strange Lift[Dijkstra最短路]
- hdu 1548 A strange lift(搜索or最短路)
- HDU 1548 A strange lift(最短路或BFS)
- hdu 1548 A strange lift 最短路(spfa)
- HDU-1548 A strange lift(最短路[Spfa || BFS])
- HDU 1548 A strange lift(最短路)
- hdu 1548 A strange lift(最短路)
- 最短路(Dijstra) A strange lift
- HDU - 1548 A strange lift(Dijkstra)
- hdu 1548 A strange lift(最短路)
- HDOJ A strange lift(Dijkstra最短路问题)
- HDU1584-A strange lift-最短路(Dijkstra模板题)
- HDU 1548 A strange lift(Dijkstra、BFS、DP)
- HDU 1548 A strange lift 最短路变形
- Binary Tree Level Order Traversal II
- 初识机房收费系统
- 项目可用的开源库
- android 判断字符串是否为数字或中文或字母
- 加法器与乘法器
- HDU 2145 (A strange lift) 最短路(Dijkstra)
- Conditional Comments 条件注释
- Storm源码浅析之topology的提交
- 在ubuntu中如何安装sun-java6-jdk
- Visio怎么画圆形
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字
- cocos2d-x 贝塞尔曲线的简单运用(CCBezierTo,CCBezierBy)
- hnnu 11546 Sum of f(x) (求一个数的所有约数和)
- iOS之Git简介和Git常用命令