HDU Today

Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 20425 Accepted Submission(s): 4813

Problem Description
经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强。这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬浦镇陶姚村买了个房子,开始安度晚年了。
这样住了一段时间,徐总对当地的交通还是不太了解。有时很郁闷,想去一个地方又不知道应该乘什么公交车,在什么地方转车,在什么地方下车(其实徐总自己有车,却一定要与民同乐,这就是徐总的性格)。
徐总经常会问蹩脚的英文问路:“Can you help me?”。看着他那迷茫而又无助的眼神,热心的你能帮帮他吗?
请帮助他用最短的时间到达目的地(假设每一路公交车都只在起点站和终点站停,而且随时都会开)。

Input
输入数据有多组,每组的第一行是公交车的总数N(0<=N<=10000);
第二行有徐总的所在地start,他的目的地end;
接着有n行,每行有站名s,站名e,以及从s到e的时间整数t(0<t<100)(每个地名是一个长度不超过30的字符串)。
note:一组数据中地名数不会超过150个。
如果N==-1,表示输入结束。

Output
如果徐总能到达目的地,输出最短的时间;否则,输出“-1”。

Sample Input
6
xiasha westlake
xiasha station 60
xiasha ShoppingCenterofHangZhou 30
station westlake 20
ShoppingCenterofHangZhou supermarket 10
xiasha supermarket 50
supermarket westlake 10
-1

Sample Output
50

Hint:
The best route is:
xiasha->ShoppingCenterofHangZhou->supermarket->westlake

虽然偶尔会迷路,但是因为有了你的帮助
**和**从此还是过上了幸福的生活。

――全剧终――

思路:这道题利用的是dij算法去做的,其实最大的难点就在于将字符串转化为数字,之前是利用数组来去完成转化的,非常的麻烦,这次利用map来进行运算,简单了不少。(关于map,我也只是会简单的运用而已,具体的用法大家还是百度吧。)

ac代码:

#include<Stdio.h>
#include<string.h>
#include<map>
#include<iostream>//运用map 必须要加的头文件。
#define INF 0x3f3f3f
using namespace std;
int vis[200],dis[200],plat[200][200],cnt,flag,T;
map<string,int>trla;
void ini(){for(int i=1;i<200;i++)for(int j=1;j<200;j++){if(i==j)plat[i][j]=0;elseplat[i][j]=INF; }
}
void getmap(){char a[50],b[50],beg[50],end[50];int cost;scanf("%s%s",beg,end);if(strcmp(beg,end)==0){flag=1;}ini();trla.clear();trla[beg]=1;trla[end]=2;cnt=2;for(int i=1;i<=T;i++){scanf("%s%s%d",a,b,&cost);if(!trla[a])trla[a]=++cnt;if(!trla[b])trla[b]=++cnt;if(plat[trla[a]][trla[b]]>cost)//去除掉重边的部分。 plat[trla[a]][trla[b]]=plat[trla[b]][trla[a]]=cost;//题目上没直接说明是单向边的话,就判断为双向边。 }
}
void dijkstra(){//dij模板,好久不写,差点都忘了。还是要保留一些手感的啊。 memset(dis,INF,sizeof(dis));memset(vis,0,sizeof(vis));for(int i=1;i<=cnt;i++)dis[i]=plat[1][i];vis[1]=1;for(int i=1;i<=cnt;i++){int j,k,temp=INF;for( j=1;j<=cnt;j++)if(!vis[j]&&temp>dis[j])temp=dis[k=j];vis[k]=1;for(j=1;j<=cnt;j++)if(!vis[j]&&dis[j]>dis[k]+plat[k][j])dis[j]=dis[k]+plat[k][j]; }if(dis[2]!=INF) //一个需要稍微注意点的地方 就是题目说了 到达不了的话就是-1. printf("%d\n",dis[2]);elseprintf("-1\n");
}
int main(){while(scanf("%d",&T)!=EOF&&T!=-1){flag=0;getmap();if(flag){//因为最开始把起始站点设为1,终点设为2,那么其实就意味着需要单独再考虑一下起点终点,相同的问题。 printf("0\n");continue ;}dijkstra();}return 0;
} 

HDOJ--2112--HDU Today相关推荐

  1. HDOJ 2112 HDU Today (最短路 Dijkstra SPFA)

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. HDOJ 1157 HDU 1157 Who's in the Middle ACM 1157 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋   题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1157 题目描述: ...

  3. HDOJ 1874 HDU 1874 畅通工程续 ACM 1874 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:          http://acm.hdu.edu.cn/showproblem.php?pid=1874 ...

  4. HDOJ 1213 HDU 1213 How Many Tables ACM 1213 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址:          http://acm.hdu.edu.cn/showproblem.php?pid=1213 ...

  5. HDOJ 1016 HDU 1016 Prime Ring Problem ACM 1016 IN HDU

    题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1016 题目描述: Prime Ring Problem Time Limit: 4000/2000 ...

  6. HDOJ 1253 HDU 1253 胜利大逃亡 ACM 1253 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋   题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1253 题目描述: ...

  7. hdu 2112 HDU Today 最短路(Dijkstra算法)

    HDU Today                                                                 Time Limit: 15000/5000 MS ...

  8. HDU 2112 HDU Today (dijkstar + map)

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  9. HDOJ 2227 HDU 2227 Find the nondecreasing subsequences ACM 2227 IN HDU

    MiYu原创, 转帖请注明 : 转载自 ______________白白の屋   题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=2227 题目描述: ...

  10. HDU 2112 HDU Today lt;SPFA算法+map函数gt;

    HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

最新文章

  1. Python学习笔记十一:面向对象
  2. SQLServer2005表分区知识点摘要
  3. etcd 启动分析_Kubernetes网络分析之Flannel
  4. CommonJS规范(转)
  5. ElementUI项目中怎样引用Jquery
  6. url充定向 html转义,html、javascript、url特殊字符的转义诠释及使用方法详解
  7. 思科路由和交换限制用户出外网的几种策略
  8. python页面驱动mxd_如何利用python 批量导出mxd至jpg
  9. 用计算机演奏打上花火,米津玄师打上花火歌词中文谐音(最好要简单全面)
  10. Backtrader交易基础2
  11. mysql创建触发器的权限_MYSQL设置触发器权限问题的解决方法
  12. windows10查看本机IP脚本
  13. 空间留言软件_锦州教育智慧云平台登录个人空间
  14. 几款好看的css表格
  15. 虚幻引擎C++开发学习(三)
  16. 三层交换机和vrrp协议
  17. 生成树与基本回路和基本割集
  18. MathType安装和解决不能Crtl+V的问题
  19. 吉米_王:浅谈“并行计算”
  20. mini Vue的实现 Vue工作原理简析

热门文章

  1. 真正决定你成败的,是时间管理!
  2. 走近汇编理解与内核编程
  3. 详解tf.Session()和tf.InteractiveSession()的区别
  4. PyTorch:数据读取1 - Datasets及数据集划分
  5. python中安装包出现Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))…………
  6. 【机器学习】xgboost以及lightgbm资料汇总
  7. node定时任务php 卡,NodeJs实现定时任务的示例代码
  8. 小蠓虫如何灭_怎样消灭蠓虫?
  9. 8086cpu学习笔记(3):寻址方式
  10. iqoo支持typec耳机吗_动圈+动铁双单元的蓝牙耳机用过没?南卡T2无线耳机重磅来袭...