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 ... 
随机推荐
- ASP.NET Web API编程——使用自签名SSL证书
			1自签名SSL证书的创建 创建自签名SSL工具xca为:https://sourceforge.net/projects/xca/ 创建过程 1)创建根证书 打开软件,界面如下. 点击,看到下拉菜单, ... 
- HDU 2088  Box of Bricks(脑洞)
			传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2088 Box of Bricks Time Limit: 1000/1000 MS (Java/Oth ... 
- Gradle Goodness: Set Java Compiler Encoding
			If we want to set an explicit encoding for the Java compiler in Gradle we can use the options.encodi ... 
- 使用py2exe将python程序打包成exe程序
			近日帮朋友写了个python小程序,从互联网上抓取一些需要的文章到本地.为了运行方便,希望能转换成exe程序在windows下定期执行.从百度上找了些文章,发现py2exe的应用比较多,遂使用之. 1 ... 
- Oracle作业5——多表查询、子查询
			一.基础练习: 1.查询和scott相同部门的员工姓名ename和雇用日期hiredate SELECT ENAME,HIREDATE FROM EMP WHERE DEPTNO=(SELECT DE ... 
- LeetCode 中级 - 优势洗牌(870)
			给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述. 返回 A 的任意排列,使其相对于 B 的优势最大化. 示例 2: 输入: ... 
- #leetcode刷题之路12-整数转罗马数字
			罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 ... 
- 创建<Bean>sessionFactory错误, init方法调用失败;嵌套异常是org.hibernate.exception。
			未知原因:在Maven中hibernate映射开启了自动更新表,出现此异常 org.springframework.beans.factory.BeanCreationException: Error ... 
- double工具类
			package com.zq.utils; /** * * 经度数字操作类 * * Created by MyEclipse. Author: ChenBin E-mail: chenbin_2008 ... 
- 纯js轮播图练习-3,类似于淘宝海报带小圆点轮播图
			基于js和css,跟着网上的视频教程,结合自己想要的效果,做出了一个类似于淘宝海报的效果. 如图:淘宝首页 自己做的: 代码: <!DOCTYPE html> <html> & ... 
