hdu 2145 (排序+dij)
来源:互联网 发布:软件源代码管理流程图 编辑:程序博客网 时间:2024/06/11 20:50
点击打开链接
WA了好几次。。。
还是没想明白。。
WA代码,,下面有aC的代码
#include"stdio.h"#include"string.h"#include"stdlib.h"#define inf 1000000int n,m;int map[330][330];int f[330],mark[330];int end;struct node{int num;int dis;int speed;int pos;double time;}A[330];int cmp(const void*a,const void*b){struct node *c,*d;c=(struct node*)a;d=(struct node*)b;if(c->time!=d->time)return c->time>d->time;else if(c->dis!=d->dis)return d->dis-c->dis;else return d->num-c->num;}int main(){int k;int i,j;int a,b,c;while(scanf("%d%d%d",&n,&m,&k)!=-1){for(i=0;i<=n;i++){for(j=0;j<=n;j++){if(i==j)map[i][i]=0;else map[i][j]=inf;}}for(i=0;i<k;i++){scanf("%d%d%d",&a,&b,&c);if(c<map[b][a])map[b][a]=c;}scanf("%d",&end);for(i=1;i<=m;i++)scanf("%d",&A[i].pos);for(i=1;i<=m;i++){A[i].num=i;scanf("%d",&A[i].speed);}int min;memset(mark,0,sizeof(mark));for(i=1;i<=n;i++)f[i]=map[end][i];f[end]=0;for(i=1;i<n;i++){min=inf;k=-1;for(j=1;j<=n;j++){if(!mark[j]&&f[j]<min){min=f[j];k=j;}}if(k==-1)break;mark[k]=1;for(j=1;j<=n;j++){if(!mark[j]&&f[j]>f[k]+map[k][j])f[j]=map[k][j]+f[k];}}for(i=1;i<=m;i++){A[i].dis=f[A[i].pos];A[i].time=A[i].dis*1.0/A[i].speed;}for(i=1;i<=m;i++){if(A[i].dis<inf)break;}if(i==m+1)printf("No one\n");else{A[0].time=inf;A[0].dis=0;A[0].num=0;qsort(A,m+1,sizeof(A[0]),cmp);printf("%d\n",A[0].num);}}return 0;}
#include"stdio.h"#include"string.h"#include"stdlib.h"#include"algorithm"#define inf 1000000using namespace std;struct node{ int speed; int pos; int dist; int num; double cost;}A[510];int n,m,k;int end;int map[510][510],v[510],dis[510];bool cmp(node a,node b){ if(a.cost!=b.cost)return a.cost<b.cost; else if(a.dist!=b.dist) return a.dist>b.dist; else return a.num>b.num;}int main(){ int f,min; int a,b,c; int i,j; while(scanf("%d%d%d",&n,&m,&k)!=-1) { for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(i==j)map[i][j]=0; else map[i][j]=inf; } } for(i=0;i<k;i++) { scanf("%d%d%d",&a,&b,&c); if(c<map[b][a])map[b][a]=c; } scanf("%d",&end); for(i=1;i<=n;i++) dis[i]=map[end][i]; for(i=1;i<=m;i++) { A[i].num=i; scanf("%d",&A[i].pos); } for(i=1;i<=m;i++) scanf("%d",&A[i].speed); memset(v,0,sizeof(v)); for(i=1;i<n;i++) { min=inf; f=-1; for(j=1;j<=n;j++) { if(!v[j]&&dis[j]<min) { min=dis[j]; f=j; } } if(f==-1)break; v[f]=1; for(j=1;j<=n;j++) { if(!v[j]&&dis[j]>dis[f]+map[f][j]) dis[j]=dis[f]+map[f][j]; } } for(i=1;i<=m;i++) { A[i].dist=dis[A[i].pos]; A[i].cost=1.0*A[i].dist/A[i].speed; } int mind=inf; for(i=1;i<=m;i++) { if(A[i].dist<mind) { mind=A[i].dist; break; } } if(mind!=inf) { sort(A+1,A+m+1,cmp); printf("%d\n",A[1].num); } else printf("No one\n"); } return 0;}
- hdu 2145 (排序+dij)
- hdu 2112 HDU Today (map+DIJ)
- 【HDU 2544】最短路(dij)
- 【HDU 2544】最短路(Dij)
- hdu 2066 一个人的旅行 (DIJ)
- hdu 2544 最短路(最短路径)(flody、dij、dij+priority queue、bellman、spfa)
- hdu 2544 dij
- hdu 4568 dij+TSP
- hdu2112 HDU Today---dij
- hdu 2290 Find the Path(dij+heap)
- 杭电 HDU 1233 还是畅通工程 (dij)
- HDU 2066 一个人的旅行 (裸的dij)
- hdu 3873+DIJ的思想
- hdu 2544 最短路 (dij)
- HDU 2544 最短路 Dij
- hdu 6005 Pandaland(dij+暴力)
- dij算法(迪杰斯特拉)
- 节约经费(dij)
- 美国人打仗的第二天买黄金!
- django 实现的组织架构树
- 华为离生命企业有多远
- android中的数据库操作
- DB2之MQT实例精解
- hdu 2145 (排序+dij)
- 单例模式
- UIApplication sharedApplication详细解释-IOS .
- 关键字 -- restrict
- 李敖的读书方法
- php对mysql的增删改查
- hdu 1175 连连看 BFS
- HD ACM 2.1.6 整数对
- boost库在工作(20)线程之五