hdu2112(HDU Today 简单最短路)
这样住了一段时间,徐总对当地的交通还是不太了解。有时很郁闷,想去一个地方又不知道应该乘什么公交车,在什么地方转车,在什么地方下车(其实徐总自己有车,却一定要与民同乐,这就是徐总的性格)。
徐总经常会问蹩脚的英文问路:“Can
you help
me?”。看着他那迷茫而又无助的眼神,热心的你能帮帮他吗?
请帮助他用最短的时间到达目的地(假设每一路公交车都只在起点站和终点站停,而且随时都会开)。
第二行有徐总的所在地start,他的目的地end;
接着有n行,每行有站名s,站名e,以及从s到e的时间整数t(0<t<100)(每个地名是一个长度不超过30的字符串)。
note:一组数据中地名数不会超过150个。
如果N==-1,表示输入结束。
xiasha westlake
xiasha station 60
xiasha ShoppingCenterofHangZhou 30
station westlake 20
ShoppingCenterofHangZhou supermarket 10
xiasha supermarket 50
supermarket westlake 10
-1
#include<stdio.h>
#include<iostream>
#include<map>
#include<queue> using namespace std; #define INF 99999999 int Map[155][155],n,node[155]; void init()
{
for(int i=0;i<=150;i++)
for(int j=i;j<=150;j++)
Map[i][j]=Map[j][i]=node[i]=INF;
} void spfa(int star)
{
int inQ[155]={0};
queue<int>Q;
inQ[star]=1; Q.push(star);
node[star]=0;
while(!Q.empty())
{
star=Q.front(); Q.pop();
inQ[star]=0;
for(int i=1;i<=n;i++)
if(Map[star][i]+node[star]<node[i])
{
node[i]=Map[star][i]+node[star];
if(!inQ[i])
Q.push(i),inQ[i]=1;
}
}
} int main()
{
int star,end,m,a,b,p;
char aa[35],bb[35];
map<string,int>loc;
while(scanf("%d",&m)>0&&m!=-1)
{
init(); n=1; loc.clear();
scanf("%s%s",aa,bb);
loc[aa]=n; star=n;
if(!loc[bb]){n++;loc[bb]=n;}
end=loc[bb];
while(m--)
{
scanf("%s%s%d",aa,bb,&p);
if(!loc[aa]){n++;loc[aa]=n;}a=loc[aa];
if(!loc[bb]){n++;loc[bb]=n;}b=loc[bb];
if(Map[a][b]>p)
Map[a][b]=Map[b][a]=p;
}
if(star==end)
{
printf("0\n");continue;
}
spfa(star);
if(node[end]==INF) node[end]=-1;
printf("%d\n",node[end]);
}
}
hdu2112(HDU Today 简单最短路)的更多相关文章
- HDU 1874(简单最短路) (大优化)
优先队列那里用greater会报错 http://acm.hdu.edu.cn/showproblem.php?pid=1874 /* 使用pair代替结构 */ #include <iostr ...
- hdu2112 HDU Today 基础最短路
这题的关键是把车站的名字转化为点的编号.我用的是map.声明一个map<string,int> st,然后按照字符串出现的次序给st赋值.例如:st[s1]=2;代表这字符串s1出现的次序 ...
- hdu 4568 Hunter 最短路+dp
Hunter Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU 1564 简单博弈 水
n*n棋盘,初始左上角有一个石头,每次放只能在相邻的四个位置之一,不能操作者输. 如果以初始石头编号为1作为后手,那么对于每次先手胜的情况其最后一步的四周的编号必定是奇数,且此时编号为偶数,而对于一个 ...
- HDU2112 HDU Today 最短路+字符串哈希
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Hdu-2112 HDU Today (单源多点最短路——Dijsktra算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目大意:给你N个公交车站,起点,终点,各站之间的距离,求起点到终点之间的最短距离.(起点终点相 ...
- HDU 2544(简单最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=2544 /* 使用pair代替结构 */ #include <iostream> #include & ...
- 畅通工程续(HDU 1874)(简单最短路)
某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰. 现在 ...
- hdu 2037简单贪心--活动安排问题
活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子.该问题要求高效地安排一系列争用某一公共资源的活动.贪心算法提供了一个简单.漂亮的方法使得尽可能多的活动 ...
随机推荐
- iOS证书快要过期怎么办?
说法一: 1.先revoke你的Certificate,重新生成一个新的. 2.Edit一下你的证书,选择新的Certificate. 3.下载覆盖之前的证书,就可以了. 这个帐号发布的产品不会受到影 ...
- Solr4.8.0源码分析(7)之Solr SPI
Solr4.8.0源码分析(7)之Solr SPI 查看Solr源码时候会发现,每一个package都会由对应的resources. 如下图所示: 一时对这玩意好奇了,看了文档以后才发现,这个serv ...
- Delphi图像处理控件
Envision Image Library (Full Sources for D7 to D10-Seattle) v3.08http://www.intervalsoftware.com/env ...
- hdu 3912 Turn Right
http://acm.hdu.edu.cn/showproblem.php?pid=3912 这个题我用递归深搜模拟,直接爆栈了.哭啊!为什么! 这个题最主要是能走重复格子,但是方向不一样. 我用的剪 ...
- POJ2240 Arbitrage(最短路)
题目链接. 题意: 根据汇率可以将一种金币换成其他的金币,求最后能否赚到比原来更多的金币. 分析: 最短路的求法,用floyd. #include <iostream> #include ...
- tinyxml开源库的基本用法
最近项目中的某个功能需要写xml,由于项目中已经引入了tinyxml,所以不再寻找其他开源库. 前提:你得有个xml对象,声明tinyxml的对象:基于tinyxml的内存管理,TiXmlDocume ...
- 慕课网《Android智能机器人“小慕”的实现》项目上手操作与代码解读【2】
前几天有点忙,一直没写第三方API是怎么调用的,今天我先介绍一下如何调用图灵机器人第三方API. 一.图灵机器人API的调用 首先登录图灵机器人官网首页http://www.tuling123.com ...
- 基于用户映射的CAS单点登录系统设计与实现
http://wenku.baidu.com/link?url=wAZR9AMkAAcOt5J_SfroXqU5IM5RhNWaP0-YUwvZT94761Qq1-7pKAt6ngOX1zG4tYec ...
- 快速求幂(Quick Exponentiation)
接触ACM没几天,向各路大神求教,听说ACM主要是研究算法,所以便开始了苦逼的算法学习之路.话不多说,RT所示,学习快速求幂. 在头文件<math.h>或是<cmath>中,d ...
- MVC - 知识点
1. @Styles.Render("~/Content/css") 是怎么工作的? 在App_Start文件夹里面的BundleConfig.cs中定义了StyleBu ...