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. js本地对象——Date()

    Date()是JavaScript的本地对象,用于获取当前的时间,包括年.月.日.时.分.秒,可以精确到毫秒级:该对象返回的是UTC 协调世界时(Coordinated Universal Time) ...

  2. dubbo标签

    <dubbo:service/> 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心. <dubbo:reference/&g ...

  3. android canvas 画图笔记

    android canvas 画图笔记 1.PathEffect类 画虚线 Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); p.setStyle(Paint.S ...

  4. ubuntu系统AndroidStudio改动内存大小

    位于android-studio/bin文件夹下的studio64.vmoptions和studio.vmoptions文件. 把Xms,Xmx,-XX:MaxPermSize.-XX:Reserve ...

  5. nyoj--301--递推求值(经典矩阵运算)

    递推求值 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给你一个递推公式: f(x)=a*f(x-2)+b*f(x-1)+c 并给你f(1),f(2)的值,请求出f(n ...

  6. RAC连接时的2种方式Connect Time Failver和taf

    1. Client-side Connect Time Failover  在客户端的tnsname中配置多个地址,当用户连接时会按照次序尝试各个地址,直到连接成功,连接好后,不再检测地址是否可用,如 ...

  7. 深入C#类的方法

    构造函数 example1: static void Main(string [] args) { SE engineer=new SE(); engineer.Age=; enginner.Name ...

  8. vue 初始化项目模板报错

    E:\xiaogezi.cn\vue>vue init webpack myProject vue-cli · Failed to download repo vuejs-templates/w ...

  9. RMAN删除归档脚本

    crosscheck archivelog all;   delete noprompt expired archivelog all;   delete noprompt archivelog un ...

  10. CentOS-1810系统DHCP服务器ISC DHCP软件配置说明

    DHCP 全称Dynamic Host configuration protocol, 动态主机配置协议.是一个局域网的网络协议,使用UDP协议工作,它可以为客户机自动分配IP地址.子网掩码以及缺省网 ...