hdu2145
来源:互联网 发布:剑三纯阳捏脸数据女 编辑:程序博客网 时间:2024/06/08 05:47
/*题意:n个城市,k个人,m条路,然后给定一个重点,然后给出k个人的起点,然后给出k个人走路的速度,要你求最快速到达的那个人的编号,如果速度相同则输出距离远的如果距离相同则输出编号大的;是有向边;思路:跟之前做过那个派人去守仓库的那个题也是一样的有向边,求派人去仓库的最短路,求那些人回来的最短路,这里也是一样,就是求其他人来起点的最短路,然后在计算得出最短的即可。*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<queue>#include<vector>using namespace std;#define INF 1e9struct edge{ int from,to,w;};int dis[350];vector<edge>edges;vector<int>G[350];int renqi[350];int rensudu[350];double renshijian[350];int n,k,m;int zx;int map[350][350];int select[350];void addedge(int x,int y,int w){ edge a={x,y,w}; edges.push_back(a); G[x].push_back(edges.size()-1);}void dij(){ for(int i=1;i<=n;i++) { dis[i]=INF; } dis[zx]=0; queue<int>q; q.push(zx); int a; while(!q.empty()) { a=q.front(); q.pop(); for(int i=0;i<G[a].size();i++) { edge v=edges[G[a][i]]; if(dis[a]+v.w<dis[v.to]) { dis[v.to]=dis[a]+v.w; q.push(v.to); } } }}void init(){ for(int i=1;i<=n;i++) { G[i].clear(); } edges.clear(); for(int i=1;i<=m;i++) { int x,y,w; scanf("%d %d %d",&x,&y,&w); addedge(y,x,w); } scanf("%d",&zx); dij(); for(int i=1; i<=k;i++) { scanf("%d",&renqi[i]); } for(int i=1;i<=k;i++) { scanf("%d",&rensudu[i]); }}int main(){ while(scanf("%d %d %d",&n,&k,&m)!=EOF) { init(); double max1=INF; int u=-1,juli; for(int i=1;i<=k;i++) if(dis[renqi[i]]<INF) { renshijian[i]=((double)dis[renqi[i]])/rensudu[i]; if(max1>renshijian[i]) { max1=renshijian[i]; juli=dis[renqi[i]]; u=i; } else if(max1==renshijian[i]) { if(juli<=dis[renqi[i]]) { u=i; juli=dis[renqi[i]]; } } } if(u!=-1) printf("%d\n",u); else printf("No one\n");} return 0;}
阅读全文
0 0
- hdu2145
- hdu2145
- HDU2145 zz's Mysterious Present(最短路)
- HDU2145 zz's Mysterious Present 解题报告 ——最短路dijkstra算法
- java查询功能输入**中文字符乱码**问题:
- Less 命令
- MySQL系列课程之三MySQL的登录
- poj 1631 简单的LIS问题
- 从字节码角度分析java泛型数组的问题
- hdu2145
- 两分钟搞定极光推送
- 二、垃圾收集与内存分配策略
- Socket通信
- Hibernate中的query.setFirstResult(),query.setMaxResults();
- 伪分布式Hadoop系统上的wordCount实现命令
- Bsmtp.dll和Bsendm.exe结合发送邮件
- 世界公认最健康健身作息时间表!
- "-"菜单(CMeun)汇总文件