题目:http://acm.hdu.edu.cn/showproblem.php?pid=2112

文章末有一些相应的测试数据供参考。

此题就是一个求最短路的问题,只不过现在的顶点名称变成了字符串而不是数字,我们用map做一个映射即可。

然后跑一个dijkstra算法就ok了,其中还用到了优先队列,每次取最小权值的边。

用时:1981 MS  还是挺快的

坑点

容器置空!!  map以及vector

此图是一个无向图!

可能有重边的情况!

首尾同名!

代码如下:

#include<iostream>
#include<vector>
#include<string>
#include<utility>
#include<map>
#include<queue>
#include<algorithm>
#include<functional>
using namespace std;
struct edge
{
int to, cost;
};
const int INF = 0x3f3f3f3f, MAX = ;
typedef pair<int, int> P; //first为最短距离, second是顶点编号 vector<edge> G[MAX];
int d[MAX]; //各个顶点的最短距离 void dijkstra(int s)
{
priority_queue<P, vector<P>, greater<P> >que;
fill(d, d + MAX, INF);
d[s] = ;
que.push(P(, s)); while (!que.empty())
{
P p = que.top();
que.pop();
int v = p.second;
if (d[v] < p.first)continue;
for (int i = ; i < G[v].size(); ++i)
{
edge e = G[v][i];
if (d[e.to] > d[v] + e.cost)
{
d[e.to] = d[v] + e.cost;
que.push(P(d[e.to], e.to));
}
}
}
} int main()
{
int N;
map<string, int> Map;
while (cin >> N&&N != -)
{
//!!记得置空!!
Map.clear();
for (int i = ; i < MAX; ++i)G[i].clear();
//少一个置空就过不了!!
string start, s1, s2;
cin >> start >> s2;
Map[start] = ;
Map[s2] = ;
int item = ;
while (N--)
{
edge e;
cin >> s1 >> s2 >> e.cost;
if (!Map[s1])Map[s1] = item++;
if (!Map[s2])Map[s2] = item++;
e.to = Map[s2];
G[Map[s1]].push_back(e);
e.to = Map[s1];
G[Map[s2]].push_back(e);
}
if (Map[start] == )
{
cout << << endl;
continue;
}
dijkstra();
if (d[] == INF)d[] = -;
cout << d[] << endl;
}
}

测试数据

xiasha westlake
xiasha station
xiasha ShoppingCenterofHangZhou
station westlake
ShoppingCenterofHangZhou supermarket
station supermarket
xiasha supermarket
supermarket xiasha
supermarket westlake xia xia
-

output


感谢您的阅读,祝您生活愉快~

HDU Today hdu 2112的更多相关文章

  1. HDU - 2222,HDU - 2896,HDU - 3065,ZOJ - 3430 AC自动机求文本串和模式串信息(模板题)

    最近正在学AC自动机,按照惯例需要刷一套kuangbin的AC自动机专题巩固 在网上看过很多模板,感觉kuangbin大神的模板最为简洁,于是就选择了用kuangbin大神的模板. AC自动机其实就是 ...

  2. HDU Today HDU杭电2112【Dijkstra || SPFA】

    http://acm.hdu.edu.cn/showproblem.php?pid=2112 Problem Description 经过锦囊相助,海东集团最终度过了危机,从此.HDU的发展就一直顺风 ...

  3. HDU 3062 && HDU 1824 && POJ 3678 && BZOJ 1997 2-SAT

    一条边<u,v>表示u选那么v一定被选. #include <iostream> #include <cstring> #include <cstdio> ...

  4. HDU 1069&&HDU 1087 (DP 最长序列之和)

    H - Super Jumping! Jumping! Jumping! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format: ...

  5. hdu 1430+hdu 3567(预处理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1430 思路:由于只是8种颜色,所以标号就无所谓了,对起始状态重新修改标号为 12345678,对目标状 ...

  6. hdu 4055 && hdu 4489 动态规划

    hdu 4055: 一开始我想的递推方向想得很复杂,看了别人的博客后才醍醐灌顶: 参照他的思路和代码: #include<cstdio> #include<cstring> # ...

  7. Manacher 算法(hdu 3068 && hdu 3294)

    今天打算补前晚 BC 的第二题,发现要用到能在 O(n) 时间求最大回文子串长度的 Manacher 算法,第一次听,于是便去百度了下,看了大半天,总算能看懂了其思想,至于他给出的代码模板我没能完全看 ...

  8. HDU 1053 & HDU 2527 哈夫曼编码

    http://acm.hdu.edu.cn/showproblem.php?pid=1053 #include <iostream> #include <cstdio> #in ...

  9. hdu 2121 , hdu 4009 无定根最小树形图

    hdu 2121 题目:给出m条有向路,根不确定,求一棵最小的有向生成树. 分析:增加一个虚拟节点,连向n个节点,费用为inf(至少比sigma(cost_edge)大).以该虚拟节点为根求一遍最小树 ...

随机推荐

  1. Ex1—vlookup

    VLOOKUP 的语法结构 整个计算机就相当于一门语言,首先我们就是要获取该函数的语法结构.以下是官网的语法结构 VLOOKUP(lookup_value, table_array, col_inde ...

  2. git 配置 SSH密钥

    1.登录用户 $ git config --global user.name "geekfeier" $ git config --global user.email " ...

  3. XSS报警机制(前端防火墙:第二篇)

    XSS报警机制(前端防火墙:第二篇) 在第一章结尾的时候我就已经说了,这一章将会更详细的介绍前端防火墙的报警机制及代码.在一章出来后,有人会问为什么不直接防御,而是不防御报警呢.很简单,因为防御的话, ...

  4. 20165320 第四次实验 Android开发

    实验内容: Android程序设计-1 实验要求: - 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)>第二十四章: - 参 ...

  5. 39 - 同步-异步-IO多路复用

    目录 1 同步与异步 2 阻塞与非阻塞 3 什么是IO 3.1 内核态用户态 3.2 IO两个阶段 3.3 IO模型 3.3.1 同步阻塞IO 3.3.2 同步非阻塞IO 3.3.3 IO多路复用 3 ...

  6. 我看到的最棒的Twisted入门教程!

    http://www.douban.com/note/232204441/ http://www.cnblogs.com/sevenyuan/archive/2010/11/18/1880681.ht ...

  7. setInterval做定时器

    <script src="/js/jquery-1.8.3.min.js"></script> <script> $(function () { ...

  8. 孤的Scrapy官文阅读进程

    上月底开始学习Scrapy爬虫框架,看了一些中文文档,讲应用.讲基础的,对其有一些了解了.终于在28日打开Scrapy的官网,并制作了其文档的思维导图,进而开启了其文档的阅读之旅. 本文展示了从6月2 ...

  9. 【小程序开发】上拉加载更多demo

    wxml: <scroll-view class='swiper-scroll' scroll-y="{{true}}" bindscrolltolower="lo ...

  10. React 学习二 组件

    React的一个最大的特点就是组件化的开发模式.今天就来试一下: <!DOCTYPE html> <html> <head> <meta charset=&q ...