hdu 2112 HDU Today(map与dijkstra的结合使用)
HDU Today
Time
Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6147 Accepted Submission(s): 1485
这样住了一段时间,徐总对当地的交通还是不太了解。
有时非常郁闷。想去一个地方又不知道应该乘什么公交车。在什么地方转车。在什么地方下车(事实上徐总自己有车,却一定要与民同乐,这就是徐总的性格)。
徐总常常会问蹩脚的英文问路:“Can you help me?
”。看着他那迷茫而又无助的眼神,热心的你能帮帮他吗?
请帮助他用最短的时间到达目的地(如果每一路公交车都仅仅在起点站和终点站停,并且随时都会开)。
第二行有徐总的所在地start,他的目的地end;
接着有n行,每行有站名s。站名e。以及从s到e的时间整数t(0<t<100)(每一个地名是一个长度不超过30的字符串)。
note:一组数据中地名数不会超过150个。
假设N==-1,表示输入结束。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<map> using namespace std; map<string,int>mp;//映射
string s,e;//開始站和终点站
int n; const int INF=10010100; int m[160][160],d[160],used[160],k; void dij()///dij模板
{
fill(d,d+k+1,INF);//注意这里是k个,不是n个,n仅仅是路数,不是点数,一開始由于这个RE了好几次
memset(used,0,sizeof(used));
d[1]=0;
while(1)
{
int v=-1;
for(int u=1; u<=k; u++)
if(!used[u]&&(v==-1||d[u]<d[v]))
v=u;
if(v==-1)
break;
if(d[v]==INF)
break;
used[v]=1;
for(int u=1; u<=k; u++)
if(d[u]>d[v]+m[v][u])
d[u]=d[v]+m[v][u];
}
} int main()
{
//int n;
while(cin>>n)
{
if(n==-1)
break;
else
{
mp.clear();
for(int i=0; i<=155; i++)//建图,初始化
for(int j=0; j<=155; j++)
{
if(i==j)
m[i][j]=0;
else
m[i][j]=INF;
}
int v;
k=1;
string s1,s2;
cin>>s>>e;
//用map映射给站名标记,起始站为1,终点站为2
mp[s]=k++;
mp[e]=k++;
for(int i=0; i<n; i++)
{
cin>>s1>>s2>>v;
if(!mp[s1])
mp[s1]=k++;
if(!mp[s2])
mp[s2]=k++;
if(v<m[mp[s1]][mp[s2]])
m[mp[s1]][mp[s2]]=m[mp[s2]][mp[s1]]=v;
}
//cout<<mp[e]<<endl;
if(s==e)
cout<<"0\n";
else
{
dij();
if(d[2]==INF)
cout<<"-1\n";
else
cout<<d[2]<<endl;
}
}
}
return 0;
}
hdu 2112 HDU Today(map与dijkstra的结合使用)的更多相关文章
- hdu 2112 (最短路+map)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others) ...
- HDU 2112 HDU Today(Dijkstra)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others ...
- hdu 2112 HDU Today
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的 ...
- HDU 2112 HDU Today (Dijkstra算法)
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU 2112 HDU Today(最短路径+map)
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU 2112 HDU Today(STL MAP + Djistra)
题目链接:HDU Today 立即集训要開始,抓紧时间练练手,最短路的基础题,第一次用STL的map 题目非常水,可是错了N遍.手贱了.本题不优点理的就是把地名转化为数字 #include <i ...
- ACM学习历程—HDU 2112 HDU Today(map && spfa && 优先队列)
Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线 ...
- HDU 2112 HDU Today Dij+map转化
HDU Today 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线,并 ...
- HDU 2112 HDU Today <SPFA算法+map函数>
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
随机推荐
- Spring Boot整合shiro-登录认证和权限管理
原文地址:http://www.ityouknow.com/springboot/2017/06/26/springboot-shiro.html 这篇文章我们来学习如何使用Spring Boot集成 ...
- Linux操作系统桌面环境GNOME和KDE的切换
一.设置GNOME或者KDE为默认的启动桌面环境 方法1:修改/etc/sysconfig/desktop,根据需要将“DESKTOP”后面的内容改为KDE或GNOME. 方法2:在当前用户目录下建立 ...
- Python标准库:内置函数chr(i)
返回一个參数i表示的字符串. 比方,chr(97)返回字符"a".參数i的有效范围为0到1.114,111(0x10FFFF),其他范围的值会抛出异常ValueError. 与之相 ...
- 657. Judge Route Circle【easy】
657. Judge Route Circle[easy] Initially, there is a Robot at position (0, 0). Given a sequence of it ...
- Navicat for MySQL 之数据库迁移
1.将数据库下的表迁移出来 2.将表全部迁入另一个数据库 重新连接数据库看看吧!
- Django学习之raw()方法查询数据
我们经常有这种需求: 用sql来查询以及写入数据到数据库,Django当然也提供了这种方式,那就是通过raw方法: sql = "select * from blog_blog where ...
- javascript消息框
JavaScript有三种消息框: 警告框:alert() alert("我是警告框!!") 确认框:confirm() function show_confirm() { var ...
- App打包上架流程(iOS转)
由于苹果的机制,在非越狱机器上安装应用必须通过官方的Appstore, 开发者开发好应用后上传Appstore,也需要通过审核等环节. AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传A ...
- 各类 HTTP 返回状态代码详解(转)
FTP状态码 一.HTTP状态码 如果某项请求发送到您的服务器要求显示您网站上的某个网页(例如,用户通过浏览器访问您的网页或 Googlebot 抓取网页时),服务器将会返回 HTTP 状态代码以响应 ...
- Android中makfile的随记
什么是makefile?也许非常多Winodws的程序员都不知道这个东西,由于那些Windows的IDE都为你做了这个工作,但我认为要作一个好的Android底层程序员. makefile还是要懂. ...