HDU Today
HDU Today |
| Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) |
| Total Submission(s): 143 Accepted Submission(s): 43 |
|
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 |
|
Sample Output
50 Hint: |
|
Author
lgx
|
|
Source
ACM程序设计_期末考试(时间已定!!)
|
|
Recommend
lcy
|
/*
最短路,但是就是输入方式有点麻烦的
*/
#include<bits/stdc++.h>
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
set<string >s;//用来存车站的号码
map<string,ll>m;
string x,y;//两个车站
string fis,en;//两个车站
ll mapn[][];
bool vis[];
ll d[];
ll n;
ll val;
ll f;
struct node
{
string u,v;
ll val;
node(){}
node(string a,string b,ll c)
{
u=a;
v=b;
val=c;
}
};
vector<node>edge;
set<string>::iterator it; //定义前向迭代器
void init()
{
edge.clear();
s.clear();
m.clear();
memset(mapn,INF,sizeof mapn);
memset(vis,false,sizeof vis);
memset(d,INF,sizeof d);
f=;
}
ll dijkstra()
{
//cout<<"ok"<<endl;
ll tmp,pt;
for(int i=;i<=n;i++)//进行初始化
d[i]=mapn[][i];
vis[]=;
d[]=;
for(int i=;i<=n;i++)
{
tmp=INF;//找到一个权值最小的点 for(int j=;j<=n;j++)
{
if(tmp>d[j]&&!vis[j])
{
tmp=d[j];
pt=j;
}
}
vis[pt]=;
for(int j=;j<=n;j++)
{
if(!vis[j])
d[j]=min(d[j],d[pt]+mapn[pt][j]);
}
}
return d[n];
}
int main()
{
//freopen("C:\\Users\\acer\\Desktop\\in.txt","r",stdin);
while(scanf("%lld",&n)!=EOF&&n!=-)
{
init();
cin>>fis>>en;
if(fis==en)
f=;
//m.insert(pair<string,ll>(fis,1));
for(int i=;i<n;i++)
{
cin>>x>>y>>val;
edge.push_back(node(x,y,val));
s.insert(x);s.insert(y);
}
if(f)//如果起终点相同的话就输出1
{
puts("");
continue;
}
if(s.find(fis)==s.end()||s.find(en)==s.end())//起终点下面没给出的不可能到达
{
puts("-1");
continue;
}
m.insert(pair<string,ll>(fis,));
n=;
//cout<<s.size()<<endl;
for(it=s.begin();it!=s.end();it++)
{
if(*it==en||*it==fis)
continue;
m.insert(pair<string,ll>(*it,n++));
}
m.insert(pair<string,ll>(en,n));
//cout<<n<<endl;
for(int i=;i<edge.size();i++)
{
if(mapn[m[edge[i].u]][m[edge[i].v]]>edge[i].val)
mapn[m[edge[i].u]][m[edge[i].v]]=mapn[m[edge[i].v]][m[edge[i].u]]=edge[i].val;
}
ll cur=dijkstra();
if(cur==INF)
puts("-1");
else
printf("%lld\n",cur);
}
return ;
}
HDU Today的更多相关文章
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- hdu 4859 海岸线 Bestcoder Round 1
http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...
- HDU 4569 Special equations(取模)
Special equations Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 4006The kth great number(K大数 +小顶堆)
The kth great number Time Limit:1000MS Memory Limit:65768KB 64bit IO Format:%I64d & %I64 ...
- HDU 1796How many integers can you find(容斥原理)
How many integers can you find Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d ...
- hdu 4481 Time travel(高斯求期望)(转)
(转)http://blog.csdn.net/u013081425/article/details/39240021 http://acm.hdu.edu.cn/showproblem.php?pi ...
- HDU 3791二叉搜索树解题(解题报告)
1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...
- hdu 4329
problem:http://acm.hdu.edu.cn/showproblem.php?pid=4329 题意:模拟 a. p(r)= R'/i rel(r)=(1||0) R ...
- HDU 2586
http://acm.hdu.edu.cn/showproblem.php?pid=2586 题意:求最近祖先节点的权值和 思路:LCA Tarjan算法 #include <stdio.h&g ...
随机推荐
- angular 如何获取使用filter过滤后的ng-repeat的数据长度
在做项目的过程中,被产品要求在内容为空的过程中显示提示信息,然哦户内容使用ng-repeat循环输出的,并且使用了filter过滤.后在谷歌上找到解决方案,如下: 之前代码如下显示: <ul& ...
- [js高手之路] html5 canvas动画教程 - 实时获取鼠标的当前坐标
有了前面的canvas基础之后,现在开始就精彩了,后面写的canvas教程都是属于综合应用,前面已经写了常用的canvas基础知识,参考链接如下: [js高手之路] html5 canvas系列教程 ...
- JS双击div编辑文本内容
HTML代码: <div class="album"> <div class="image"><a href="java ...
- RESTful API 架构解读
RESTful API 架构解读 首先我们还是先介绍下 RESTful api 的来龙去脉. 首先, RESTful (下文都简称 RESTful api 为 RESTful ) 1.RESTful ...
- jQuery Mobile事件,开发全解+完美注释
全栈工程师开发手册 (作者:栾鹏) jQuery Mobile事件全解 jQuery Mobile 所有class选项 jQuery Mobile 所有data-*选项 jQuery Mobile事件 ...
- Ubuntu安装Jupyter Notebook
一.Jupyter介绍 Jupyter Notebook是一个交互式笔记本,支持运行40多种编程语言.Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支 ...
- UWP上可用的GB2312编码
大概是在WP8的时候,网上有一个WP8可用的GB2312编码的解决方法,就是那个DBCSCodePage. 但是由于UAP开始,微软删掉了GetManifestResourceStream,所以这东西 ...
- setjmp和longjmp用法
本文转自:http://blog.csdn.net/wuhong40/article/details/6155838,感谢原文作者. 前不久在阅读Quake3源代码的时候,看到一个陌生的函数:setj ...
- Tracker-store
升级后发现有个tracker-store占用cpu非常厉害,查了下,好像是GNOME 3使用 Documents 來整合 本机 以及 在线(Google / Twitter)账户的文件,这个功能会呼叫 ...
- Java并发编程之显式锁机制
我们之前介绍过synchronized关键字实现程序的原子性操作,它的内部也是一种加锁和解锁机制,是一种声明式的编程方式,我们只需要对方法或者代码块进行声明,Java内部帮我们在调用方法之前和结束时加 ...