HDU Today

Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 19826    Accepted Submission(s): 4671

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 尽管偶尔会迷路,可是由于有了你的帮助
**和**从此还是过上了幸福的生活。 ――全剧终――
 
Author
lgx
 
Source
 
 
代码:
 
#include <stdio.h>
#include <string.h>
#include <queue>
#include <iostream>
#include <algorithm>
#include <map>
#define INF 0x3f3f3f3f
using namespace std;
int n;
int edgenum;
int head[20005];
char ex[35],ey[35];
int vis[155];
int dis[155];
void init()
{
edgenum=0;
memset(head,-1,sizeof(head));
}
struct Edge
{
int from,to,val,next;
}edge[20005];
void addedge(int u,int v,int w)
{
Edge E={u,v,w,head[u]};
edge[edgenum]=E;
head[u]=edgenum++;
}
map<string,int>mp;
int t;
void getmap()
{
mp.clear();//一定要清零!
getchar();
scanf("%s%s",ex,ey);
mp[ex]=1;
t=2;
if(!mp[ey])
{
mp[ey]=t++;
}
char a[35],b[35];
int c;
for(int i=1;i<=n;i++)
{
getchar();
scanf("%s%s%d",a,b,&c);
if(!mp[a])
{
mp[a]=t++;
}
if(!mp[b])
{
mp[b]=t++;
}
addedge(mp[a],mp[b],c);
addedge(mp[b],mp[a],c);
}
}
void SPFA()
{
queue<int>q;
q.push(1);
memset(vis,0,sizeof(vis));
memset(dis,INF,sizeof(dis));
vis[1]=1;
dis[1]=0;
while(!q.empty())
{
int u=q.front();
q.pop();
vis[u]=0;
for(int i=head[u];i!=-1;i=edge[i].next)
{
int v=edge[i].to;
if(dis[v]>dis[u]+edge[i].val)
{
dis[v]=dis[u]+edge[i].val;
if(vis[v]==0)
{
vis[v]=1;
q.push(v);
}
}
}
}
if(dis[mp[ey]]==INF)
printf("-1\n");
else
printf("%d\n",dis[mp[ey]]);
}
int main()
{
while(scanf("%d",&n)&&(n!=-1))
{
init();
getmap();
SPFA();
}
return 0;
}

 

HDU 2112 HDU Today &lt;SPFA算法+map函数&gt;的更多相关文章

  1. hdu 2544 最短路(SPFA算法)

    本题链接:点击打开链接 本题大意: 首先输入一个n,m.代表有n个点.m条边.然后输入m条边,每条边输入两个点及边权.1为起点,n为终点.输入两个零表示结束. 解题思路: 本题能够使用SPFA算法来做 ...

  2. hdu 2112 HDU Today

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的 ...

  3. HDU 2112 HDU Today(Dijkstra)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others ...

  4. ACM学习历程—HDU 2112 HDU Today(map && spfa && 优先队列)

    Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线 ...

  5. HDU 2112 HDU Today (Dijkstra算法)

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

  6. hdu 2112 HDU Today (floyd算法)

    这道题貌似在原来学长给我们的搞的小比赛中出过! 这次又让我遇到,果断拿下! 不过方法很蠢,跑了1000多ms,虽然要求5000ms以内! 题目就是给你一些位置之间的距离,然后再让你求特定的两点之间的距 ...

  7. HDU 2112 HDU Today(最短路径+map)

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

  8. hdu 2112 HDU Today(map与dijkstra的结合使用)

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

  9. HDU 2112 HDU Today(STL MAP + Djistra)

    题目链接:HDU Today 立即集训要開始,抓紧时间练练手,最短路的基础题,第一次用STL的map 题目非常水,可是错了N遍.手贱了.本题不优点理的就是把地名转化为数字 #include <i ...

随机推荐

  1. Ubuntu(Linux Mint):sudo apt-get upgrade升级失败

    Ubuntu上进行sudo apt-get upgrade后出现异常,升级失败. 异常信息如下: E: dpkg was interrupted, you must manually run 'dpk ...

  2. POJ 2409

    水题一道,不加优化也能0MS #include <iostream> #include <cstdio> #include <algorithm> #include ...

  3. UVALive 4192/HDU 2959 Close Enough Computations 数学

    Close Enough Computations Problem Description The nutritional food label has become ubiquitous. A sa ...

  4. git使用(公钥私钥产生--远程库添加公钥--本地库关联远程库-使用)

    原文1:http://www.cnblogs.com/wangmingshun/p/5424767.html 原文2(指令):http://blog.csdn.net/xiaohanluo/artic ...

  5. xshell同时发送多条命令

    1.如图,勾选撰写栏 勾选全部会话 下面的是一个很方便的小技巧.分屏 如下图垂直排列 水平排列等等

  6. Android 数据存取

    Android提供了Preference(配置),File(文件),SQLite数据和网络几种数据存取方式 SharedPreference提供了一种轻量级的数据存取方法,应用场合主要是比较少的配置信 ...

  7. (转)js document.all的用法

    document.all用法 一. document.all是页面内所有元素的一个集合.例如:      document.all(0)表示页面内第一个元素 二.document.all可以判断浏览器 ...

  8. 好久不见我又回来了cnblogs

    最近一直没时间写博客.... 最近工作中遇到的问题,当时花费了一定功夫才解决. 当再次遇到,同样问题的时候,我知道自己能够解决的,但是却同样,要走原来的弯路解决他. 说到底还时确实总结啊.大概是没时间 ...

  9. windows2008 虚拟机64位的操作系统安装32位的应用程序

    64位的操作系统安装32位的应用程序: 安装成功但是使用有问题 报错: 最终解决: 在一台物理机的win7上面安装该软件. 然后把安装好的文件全部拷贝到win2008虚拟机上面 启动,使用 多ok了! ...

  10. PKI和加密,散列算法

    Day 11-PKI和加密,散列算法 PKI(Public Key Infrastructure公钥基础设施) 1 PKI(Public Key Infrastructure公钥基础设施)回顾学习 - ...