题目链接:http://acm.hdu.edu.cn/status.php?user=l1526789512&pid=2112&status=5

HDU Today

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

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

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

――全剧终――

 
思路:建图的时候略坑。建完图过后floyd和dijkstra。
建图使用stl中的map。
map<string,int> m;
m.clear();  //清空
可以有m[a]这种用法;
m.begin();  //返回该map中第一个元素的迭代器
m.end();  //返回该map中最后一个元素的迭代器
m.find();  //若找到返回给元素的迭代器,否则返回最后一个元素的迭代器
distance函数  //可通过两迭代器找下标
更多关于map的东西还需继续学习。
 
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<map>
using namespace std;
#define INF 999999999 int mapp[][],flag;
int dist[];
int n; /*
void floyd()
{
for(int k=0; k<flag; k++)
for(int i=0; i<flag; i++)
for(int j=0; j<flag; j++)
if(mapp[i][j]>mapp[i][k]+mapp[k][j])
mapp[i][j]=mapp[i][k]+mapp[k][j];
}
*/ void Dijkstra(int v0)
{
int S[];
for(int i=; i<flag; i++)
{
dist[i]=mapp[v0][i];
S[i]=;
}
dist[v0]=;
S[v0]=;
for(int j=; j<flag;j++)
{
int flag1=;
int mindist=INF;
for(int i=; i<flag; i++)
{
if(!S[i]&&dist[i]<mindist)
{
mindist=dist[i];
flag1=i;
}
}
S[flag1]=;
for(int i=; i<flag;i++)
{
if(!S[i]&&mapp[flag1][i]<INF&&dist[i]>dist[flag1]+mapp[flag1][i])
dist[i]=dist[flag1]+mapp[flag1][i];
}
}
} int main()
{
char a[],b[];
int x,f;
map<string ,int> m;
while(scanf("%d",&n)!=EOF&&n!=-)
{
f=;
m.clear();
scanf("%s%s",a,b);
if(strcmp(a,b)==)
f=;
m[a]=;
m[b]=;
flag=;
for(int i=; i<; i++)
{
dist[i]=INF;
for(int j=; j<; j++)
{
if(i==j)
mapp[i][j]=;
else
mapp[i][j]=INF;
}
}
for(int i=; i<n; i++)
{
scanf("%s%s%d",a,b,&x);
//cout<<a<<b<<x<<"*"<<endl;
if(m.find(a)==m.end())
m[a]=flag++;
if(m.find(b)==m.end())
m[b]=flag++;
if(x<mapp[m[a]][m[b]])
{
mapp[m[a]][m[b]]=x;
mapp[m[b]][m[a]]=x;
}
}
if(f==)
{
printf("0\n");
continue;
}
Dijkstra();
if(dist[]==INF)
printf("-1\n");
else
printf("%d\n",dist[]); }
return ;
}

HDU_2112_最短路的更多相关文章

  1. bzoj1001--最大流转最短路

    http://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路:这应该算是经典的最大流求最小割吧.不过题目中n,m<=1000,用最大流会TLE, ...

  2. 【USACO 3.2】Sweet Butter(最短路)

    题意 一个联通图里给定若干个点,求他们到某点距离之和的最小值. 题解 枚举到的某点,然后优先队列优化的dijkstra求最短路,把给定的点到其的最短路加起来,更新最小值.复杂度是\(O(NElogE) ...

  3. Sicily 1031: Campus (最短路)

    这是一道典型的最短路问题,直接用Dijkstra算法便可求解,主要是需要考虑输入的点是不是在已给出的地图中,具体看代码 #include<bits/stdc++.h> #define MA ...

  4. 最短路(Floyd)

    关于最短的先记下了 Floyd算法: 1.比较精简准确的关于Floyd思想的表达:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点X到B.所以,我们假设maz ...

  5. bzoj1266最短路+最小割

    本来写了spfa wa了 看到网上有人写Floyd过了 表示不开心 ̄へ ̄ 改成Floyd试试... 还是wa ヾ(。`Д´。)原来是建图错了(样例怎么过的) 结果T了 于是把Floyd改回spfa 还 ...

  6. HDU2433 BFS最短路

    Travel Time Limit: 10000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  7. 最短路(代码来源于kuangbin和百度)

    最短路 最短路有多种算法,常见的有一下几种:Dijstra.Floyd.Bellman-Ford,其中Dijstra和Bellman-Ford还有优化:Dijstra可以用优先队列(或者堆)优化,Be ...

  8. Javascript优化细节:短路表达式

    什么是短路表达式? 短路表达式:作为"&&"和"||"操作符的操作数表达式,这些表达式在进行求值时,只要最终的结果已经可以确定是真或假,求值过程 ...

  9. Python中三目计算符的正确用法及短路逻辑

    今天在看别人代码时看到这样一种写法, 感觉是个挺容易踩到的坑, 搞清楚后写出来备忘. 短路逻辑 Python中进行逻辑运算的时候, 默认采用的是一种叫做短路逻辑的运算规则. 名字是很形象的, 下面直接 ...

随机推荐

  1. webpack-输出

    输出(Output) 配置 output 选项可以控制 webpack 如何向硬盘写入编译文件. 注意,即使可以存在多个入口起点,但只指定一个输出配置. 用法(Usage) 在 webpack 中配置 ...

  2. Android 布局自适应屏幕

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvenFzNjI3NjExMzA=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  3. 怎样在OTN站点高速找到asm包并下载 (Oracle RAC)

    怎样在OTN站点高速找到asm包并下载 ***********************************************声明******************************* ...

  4. 量化分析师的Python日记【第1天:谁来给我讲讲Python?】

    量化分析师的Python日记[第1天:谁来给我讲讲Python?]薛昆Kelvin优矿 001 号员工2015-01-28 15:48 58 144克隆 ###“谁来给我讲讲Python?” 作为无基 ...

  5. LINQ实现

    public static IEnumerable<TSource> MyWhere<TSource>(     this IEnumerable<TSource> ...

  6. robot framework运行测试 命令行启动

    ...\rf_test> pybot --test test_case test_suit.robot #运行一条用例 ...\rf_test> pybot test_suit.robot ...

  7. iOS:界面适配(二)--iPhone/iPad适配(关于xib)

    本文纯属个人看法,强迫症后遗症 版本:xcode 6.0 + iOS SDK 8.0 讨论范围:控制器的view(创建VC时自带的xib) ------------------------------ ...

  8. 第九周 Leetcode 502. IPO (HARD)

    Leetcode 502 一个公司 目前有资产W 可以选择实现K个项目,每个项目要求公司当前有一定的资产,且每个项目可以使公司的总资产增加一个非负数. 项目数50000 设计一个优先队列,对于当前状态 ...

  9. E20170526-hm

    plain n. 平原; 平地;   adj. 平的; 素的; 清晰的; 相貌平平的; layout   n. 布局,安排,设计; 布置图,规划图; modularity    n. 模块化; 模块性 ...

  10. LoadRunner监控Linux配置教程

    LoadRunner监控Linux资源时弹出如下错误: Monitor name :UNIX Resources. Cannot initialize the monitoring on 192.16 ...