旅行
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 18(6 users) Total Accepted: 3(3 users) Rating: Special Judge: No
Description

“04.24,和Sakura去东京天空树,世界上最暖和的地方天空树的顶上。

“04.26。和Sakura去明治神宫。有人在那里举办婚礼。”

“04.25。和Sakura去迪士尼。鬼屋非常可怕。可是有Sakura在,所以不可怕。

“Sakura最好了。”

——江南
《龙族》

绘梨衣和路明非今天要从迪士尼前往天空树,但他们的钱不多了,所以能省则省,他们如今有一个地图上面有n个景点和m条景点之间的路,每条路坐车都须要一定的钱数,如今他们求助于你,请你帮他们计算下从当前地点到目的地最少须要的钱数。

Input

有多组数据,每组数据第一行有两个数字2<=n<=30000,1<=m<=30000。

接下来n行输入n个地名。

接下来m行每行有两个字符串(长度不超过20)和一个数字,代表两地之间的坐车的费用。

接下来一行输入两个字符串分别代表起点和终点。

Output

一个int数代表最少须要的钱数。

数据保证不会超过int型范围。

Sample Input
2 1

disney

TokyoSkyTree

disney TokyoSkyTree 1

disney TokyoSkyTree
Sample Output
1
Source

2014暑假集训练习赛(7月19日)

看到 理工题目上 这个题目做的人没几个  。就看看是什么玩意儿~!~

#include<iostream>
#include<sstream>
#include<algorithm>
#include<cstdio>
#include<string.h>
#include<cctype>
#include<string>
#include<cmath>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>
using namespace std;
const int maxn=30003;
const int INF=0x1f1f1f1f;
int n,m;
//标记起始位置
string s;
string e;
map<string,int>cnt;//映射成节点编号 struct Edge
{
int from,to,dist;
Edge(int u,int v,int d):from(u),to(v),dist(d) {}
};
vector<Edge>edges;//存储边的结点信息
vector<int>G[maxn];//邻接表
bool done[maxn]; //标记是否訪问过
int d[maxn]; //距离数组
struct heapnode //用于优先队列自己定义
{
int d,u;
bool operator <(const heapnode rhs) const
{
return d > rhs.d;
}
heapnode(int dd,int uu):d(dd),u(uu) {}
}; void init()//初始化不可缺少
{
for(int i=0; i<n; i++)
G[i].clear();
edges.clear();
} void addedge(int from,int to,int dist)
{
edges.push_back(Edge(from,to,dist));
int m = edges.size();
G[from].push_back(m-1);
} void dij( int s)
{
priority_queue<heapnode>Q;
for(int i=0; i<=n; i++)//初始化距离数组
d[i]=INF;
d[s]=0;
memset(done ,0,sizeof(done));
Q.push( heapnode(0,s) );
while(!Q.empty())
{
heapnode x = Q.top();
Q.pop();
int u=x.u;
if(u==cnt[e])
{
printf("%d\n",x.d);
break;
}
if(done[u])continue;
done[u] = true;
for(int i=0; i<G[u].size(); i++)
{
Edge& e=edges[G[u][i]];//取出来一条邻接边
if(d[e.to]>d[u]+e.dist)
{
d[e.to] = d[u] + e.dist;
Q.push((heapnode(d[e.to],e.to)));
}
}
}
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
int t=1;
int ans=0;
string str;
init();
for(int i=0; i<n; i++)
{
cin>>str;
cnt[str]=t++;
}
for(int i=0; i<m; i++)
{
string str2;
int x;
cin>>str>>str2>>x;
addedge(cnt[str],cnt[str2],x);
addedge(cnt[str2],cnt[str],x);
}
cin>>s>>e;
dij(cnt[s]);
s.clear();
e.clear();
cnt.clear();
}
return 0;
}
/*
2 1
a
v
a v 1
a v
3 2
a
b
c
a b 2
b c 3
a c
*/

哈理工 oj 2122 旅行(map + 最短路dij算法)的更多相关文章

  1. 洛谷 P1027 Car的旅行路线 最短路+Dijkstra算法

    目录 题面 题目链接 题目描述 输入输出格式 输入格式 输出格式 输入输出样例 输入样例 输出样例 说明 思路 AC代码 总结 题面 题目链接 P1027 Car的旅行路线 题目描述 又到暑假了,住在 ...

  2. 天梯赛 L2-001 紧急救援 (最短路 dij)

    作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上.当其他城市有紧急求 ...

  3. Remmarguts' Date(POJ2449+最短路+A*算法)

    题目链接:http://poj.org/problem?id=2449 题目: 题意:求有向图两点间的k短路. 思路:最短路+A*算法 代码实现如下: #include <set> #in ...

  4. 单源最短路dijkstra算法&&优化史

    一下午都在学最短路dijkstra算法,总算是优化到了我能达到的水平的最快水准,然后列举一下我的优化历史,顺便总结总结 最朴素算法: 邻接矩阵存边+贪心||dp思想,几乎纯暴力,luoguTLE+ML ...

  5. 最短路Dijkstra算法的一些扩展问题

    最短路Dijkstra算法的一些扩展问题     很早以前写过关于A*求k短路的文章,那时候还不明白为什么还可以把所有点重复的放入堆中,只知道那样求出来的就是对的.知其然不知其所以然是件容易引发伤痛的 ...

  6. POJ 2449 Remmarguts' Date ( 第 k 短路 && A*算法 )

    题意 : 给出一个有向图.求起点 s 到终点 t 的第 k 短路.不存在则输出 -1 #include<stdio.h> #include<string.h> #include ...

  7. 图论算法(三) 最短路SPFA算法

    我可能要退役了…… 退役之前,写一篇和我一样悲惨的算法:SPFA 最短路算法(二)SPFA算法 Part 1:SPFA算法是什么 其实呢,SPFA算法只是在天朝大陆OIers的称呼,它的正统名字叫做: ...

  8. 【ACM程序设计】求短路 Floyd算法

    最短路 floyd算法 floyd是一个基于贪心思维和动态规划思维的计算所有点到所有点的最短距离的算法. P57-图-8.Floyd算法_哔哩哔哩_bilibili 对于每个顶点v,和任一顶点对(i, ...

  9. HDU 2066-一个人的旅行(最短路Dijkstra)

    一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

随机推荐

  1. Java数据库编程及Java XML解析技术

    1.JDBC概述 A.  什么是JDBC? Java DataBase Connectivity:是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成.通过这些类和接口 ...

  2. Asteroids(匈牙利算法)

    求最小点覆盖数,即最大匹配数,匈牙利算法. #include<stdio.h> #include<string.h> ][],vis[],linker[];//linker[] ...

  3. centos的vsftp修改上传下载速度

    比如你想限制本地用户的上传速度和下载速度为1MB/s,则在vsftpd.conf中添加以下内容:local_max_rate = 1048576 ※ 默认单位是Byte/s

  4. Python 41 多表查询 和 子查询

    1.查询             完整的查询语句             select [distinct] {* | 字段 | 聚合函数 | 表达式}from 表名                 ...

  5. 反射找Controller中的方法

    /// <summary> /// 根据接口编码APICode,调用相应的webapi方法,注意返回值是json字符串 /// </summary> /// <param ...

  6. 自学Python八 爬虫大坑之网页乱码

    Bug有时候破坏的你的兴致,阻挠了保持到现在的渴望.可是,自己又非常明白,它是一种激励,是注定要被你踩在脚下的垫脚石! python2.7中最头疼的可能莫过于编码问题了,尤其还是在window环境下, ...

  7. 水仙花数------"水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。(for循环的嵌套)

    package com.zuoye.test;//打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,//其各位数字立方和等于该数本身.//例如: ...

  8. 学习廖雪峰的Python教程之数据类型

    数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定 ...

  9. ES:AI 注释

    为AI做注解: AI已经出第三版,大的框架没有改变,DNN也没有引入AI这本书.第四版网络版应流出,不知道最终定版如何! 强化学习的方法有大幅度更新,但从策略系统更新范畴看来,没有什么实质的改变,只是 ...

  10. cannot find Toolkit in /usr/local/cuda-8.0

    对于新版本ubuntukylin17.04安装CUDA时出现 cannot find Toolkit in /usr/local/cuda-8.0 问题 尝试了各种方法,均不妥当...... 参考:h ...