hdu2112HDU Today(floyd+map数组对字符串的应用)
HDU Today
Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 38420 Accepted Submission(s): 9298
这样住了一段时间,徐总对当地的交通还是不太了解。有时很郁闷,想去一个地方又不知道应该乘什么公交车,在什么地方转车,在什么地方下车(其实徐总自己有车,却一定要与民同乐,这就是徐总的性格)。
徐总经常会问蹩脚的英文问路:“Can you help me?”。看着他那迷茫而又无助的眼神,热心的你能帮帮他吗?
请帮助他用最短的时间到达目的地(假设每一路公交车都只在起点站和终点站停,而且随时都会开)。
第二行有徐总的所在地start,他的目的地end;
接着有n行,每行有站名s,站名e,以及从s到e的时间整数t(0<t<100)(每个地名是一个长度不超过30的字符串)。
note:一组数据中地名数不会超过150个。
如果N==-1,表示输入结束。
Hint:
The best route is:
**和**从此还是过上了幸福的生活。
――全剧终――
题意:乘公交车,地点双向。给出起点和终点。还有每两个城市之间的行车距离,要求计算从起点到终点的最短时间。
题解:因为城市的数量最多只有150,所以可以用floyd算法。这题最关键的是他的地点是字符串,而不是编号,我们可以用map数组把字符串作为下标,给他赋一个编号。这样就和一般的一样了。要特判一下如果起点和终点重合,时间就是0。如果不能从给出的起点到终点,就输出-1。
#include<bits/stdc++.h>
using namespace std;
map<string,int>s;
char a[],b[];
int road[][];
const int inf=0x3f3f3f3f;
int n;
void floyd() {
for(int k=; k<=; k++) {
for(int i=; i<=; i++) {
for(int j=; j<=; j++) {
road[i][j]=min(road[i][j],road[i][k]+road[k][j]);
}
}
}
}
int main() { while(~scanf("%d",&n)&&n!=-) {
s.clear();//初始化
for(int i=; i<; i++) {
for(int j=; j<; j++) {
road[i][j]=inf;
}
road[i][i]=;
}
scanf("%s %s",a,b);
int r=;
if(!strcmp(a,b))r=;//如果起点和终点相同
s[a]=;
s[b]=;
int ans=;
int t;
for(int i=; i<n; i++) {
scanf("%s %s %d",a,b,&t);
if(!s[a])s[a]=ans++;//如果map里面没有这个字符串,就给该字符串一个新的编号
if(!s[b])s[b]=ans++;
if(t<road[s[a]][s[b]]) {
road[s[a]][s[b]]=road[s[b]][s[a]]=t;
}
}
floyd();
if(r)printf("0\n");
else if(road[][]==inf)printf("-1\n");
else printf("%d\n",road[][]);
}
return ;
}
hdu2112HDU Today(floyd+map数组对字符串的应用)的更多相关文章
- JavaScript 数组、字符串、Map、Set 方法整理
在线阅读 https://www.kancloud.cn/chenmk/web-knowledges/1080519 数组 isArray():Array.isArray(value) 用于检测变量是 ...
- ES6-新增的数组操作,数组解构,forEach,fillter,some.map的数组遍历,数组转换字符串
ES6-新增的数组操作 // es6数组格式 let json = { '0' : 'anan', '1' : 'anani', '2' : 'anania', length:3 } //es6 把数 ...
- 011-JSON、JSONObject、JSONArray使用、JSON数组形式字符串转换为List<Map<String,String>>的8种方法
一.JSON数据格式 1.1.常用JSON数据格式 1.对象方式:JSONObject的数据是用 { } 来表示的, 例如: { "id" : "123", & ...
- js数组的操作及数组与字符串的相互转化
数组与字符串的相互转化 <script type="text/javascript">var obj="new1abcdefg".replace(/ ...
- js数组,字符串常用方法汇总(面试必备)
字符串: 1.concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串. 2.indexOf() – 返回字符串中一个子串第一处出现的索引.如果没有匹配项,返回 -1 . 3.ch ...
- js 常用数组和字符串方法
javascript数组与字符串常用方法总结 最近在梳理js的基础,首先从数组和字符串开始. string 常用方法: 1.substring(start开始位置的索引,end结束位置索引) 截取的位 ...
- JS中数组和字符串的方法大全
数组的方法很多,ECMScript5又提供了好几种方法.有空把之前的云上的笔记整理了一下,方便自己以后查找使用. 一.ECMScript 3的Array.prototype中定义的方法 1.join( ...
- 舌尖上的javascript数组和字符串基本操作
Javascript数组基本操作 Javascript中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性,索引可能是整数,然而这些数字索引在内部被转换为字符串类型,这是因为javascrip ...
- JQuery攻略(三)数组与字符串
在上两章,JQuery攻略(一) 基础知识——选择器 与 DOM 和 JQuery攻略(二) Jquery手册 我们为后面的章节打好了基础,在这一章节中,我们继续. 在这一章节中,我们记录的是JQue ...
随机推荐
- HDU 2588 GCD 【Euler + 暴力技巧】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=2588 GCD Time Limit: 2000/1000 MS (Java/Others) Mem ...
- jquery分页例子
先看效果图: 实现原理很简单,使用了jquery.pagination这个插件,每当点击页码时异步去服务器去取该页的数据,简单介绍如下: 一.数据库表结构:很简单 就四个字段 分别是News_id ...
- 配置git
https://blog.csdn.net/qq_34446663/article/details/81106018
- Android 复制 粘贴 剪贴板的使用 ClipboardManager
Copy and Paste 版本:Android 4.0 r1 快速查看 用于复制粘贴数据的基于剪贴板的框架. 同时支持简单和复杂的数据,包括文本串.复杂的数据结构.文本和二进制流数据.程序 as ...
- 笔记: js构造函数与原型
目录 构造函数与原型介绍 涉及三种引用的操作 有关原型及原型链的一些相关方法总结 @ 构造函数与原型介绍 1.函数与函数的原型对象(prototype object): 在JavaScript中,创建 ...
- python开发的学生管理系统
python开发的学生管理系统(基础版) #定义一个函数,显示可以使用的功能列表给用户 def showInfo(): print("-"*30) print(" 学生管 ...
- 百度地图定位JSP代码
附:百度地图API:http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html#a1b0?qq-pf-to=pcqq.c2c &l ...
- Vue路由钩子 afterEach beforeEach区别
vue-router作为vue里面最基础的服务,学习一段时间,对遇到的需求进行一些总结 使用vue-cli作为开发前提 vue-router已经配置好了 路由写法 routes: [ { path ...
- nginx知识总结
nginx知识总结 一.功能 负载均衡 反向代理 静态资源服务器 二.来源 nginx 俄罗斯第二网站开源项目 tengine 淘宝团队基于nginx开发的 区别:nginx安装之后还得装第三方软件包 ...
- ASP.NET Core学习网站推荐
跟大家推荐一个不错的学习.NET Core 的网站,这个网站的视频是付费的,但是录视频的都是.NET Core的大佬们,个人觉得很不错推荐出来 video.jessetalk.cn