旅行
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. PCB MS SQL 排序应用---相邻数据且相同合并处理

    这是一个很有趣SQL数据处理应用,具体需求如下 ERP需要工程将物料编码相邻的编码合并求和BOM用量,巧妙的用到了已有排序号与分组排序号之间的差值求解 示例: 原数据: 要求转换: 实际转换后数据: ...

  2. Kubernetes+Jenkins+Nexus+Gitlab进行CI/CD集成

    前面已经完成了 二进制部署Kubernetes集群,下面进行CI/CD集成. 一.流程说明 应用构建和发布流程说明: 1.用户向Gitlab提交代码,代码中必须包含Dockerfile: 2.将代码提 ...

  3. Redis(三)-Ubuntu下安装

    Ubuntu 下安装 在 Ubuntu 系统安装 Redi 可以使用以下命令: $sudo apt-get update $sudo apt-get install redis-server 启动 R ...

  4. Codeforces 609D 被二分教做人

    传送门:http://codeforces.com/problemset/problem/609/D (如需转载,请注明出处,谢谢O(∩_∩)O) 题意: Nura想买k个小玩意,她手上有 s 个bu ...

  5. nprogress进度条和ajax全局事件

    nprogress和ajax全局事件 nprogress 官方网站:http://ricostacruz.com/nprogress/ 下载地址:https://github.com/rstacruz ...

  6. php全局变量 超全局变量

    php中有许多超全局变量,这意味着它们在一个脚本的全部作用域中都可用.在函数或方法中无需执行 global $variable; 就可以访问它们. 这些超全局变量是: $GLOBALS    引用全局 ...

  7. 【Oracle】truncate分区表

    分区表是生产中常用的一种表,它可以实现数据的按类存放,极大的提高了数据的查询及维护.当我们不需要某一分区的数据时,可以采用truncate来清空分区.实验如下: SQL)) partition by ...

  8. hibernate_06_单表操作_组件属性

    什么是组件属性? 比如address是students的其中一个属性,而address又有三个属性:邮编.电话和地址.address就是hibernate的组件属性. 首先建立Address类: pa ...

  9. Visual Basic for Application

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'The note of Visual Basic for Applicati ...

  10. Python学习①. 基础语法

    Python 简介 Python 是一种解释型,面向对象的语言.特点是语法简单,可跨平台 Python 基础语法 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编 ...