Hdu-2112 HDU Today (单源多点最短路——Dijsktra算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112
题目大意:给你N个公交车站,起点,终点,各站之间的距离,求起点到终点之间的最短距离。(起点终点相同距离为0)不能到达输出-1.
说真的开始看到这个题,我想利用数字标记那些地名,再利用dijsktra算法,但不知道如何用代码实现,后来在网上看博客
才知道有这样一个头文件#include<map>,map 映射,可以有这种效果,那么这题也就so easy!了,
我的AC代码
#include<iostream>
#include<map>
#include<cstdio>
#include<cstring>
#define Max 0x3f3f3f3f
using namespace std;
int dis[155],visit[155],maze[155][155];
int main(void)
{
int num,n,i,j,k,t,l,dist;
char begin[30],end[30];
char a[30],b[30];
map<string,int> station;
while(scanf("%d",&n)==1&&n!=-1)
{
memset(visit,0,sizeof(visit));
memset(maze,Max,sizeof(maze));
station.clear();
l=0;
scanf("%s%s",begin,end);
if(strcmp(begin,end)==0)
l=1;
station[begin]=1;
station[end]=2;
num=2;
for(i=0;i<n;i++)
{
scanf("%s%s%d",a,b,&dist);
if(!station[a])
station[a]=++num;
if(!station[b])
station[b]=++num;
maze[station[a]][station[b]]=maze[station[b]][station[a]]=dist;
}
if(l)
{
printf("0\n");
continue;
}
dis[1]=0;
for(i=2;i<=num;i++)
{
dis[i]=maze[1][i];
}
for(i=1;i<=num;i++)
{
t=Max;
for(j=1;j<=num;j++)
{
if(!visit[j]&&t>dis[j])
{
k=j;
t=dis[j];
}
}
if(t==Max) break;
visit[k]=1;
for(j=1;j<=num;j++)
{
if(!visit[j]&&dis[j]>dis[k]+maze[k][j])
dis[j]=dis[k]+maze[k][j];
}
}
if(dis[2]==Max)
printf("-1\n");
else
printf("%d\n",dis[2]);
}
return 0;
}
Hdu-2112 HDU Today (单源多点最短路——Dijsktra算法)的更多相关文章
- 单源最短路径问题2 (Dijkstra算法)
用邻接矩阵 /* 单源最短路径问题2 (Dijkstra算法) 样例: 5 7 0 1 3 0 3 7 1 2 4 1 3 2 2 3 5 2 4 6 3 4 4 输出: [0, 3, 7, 5, 9 ...
- 单源最短路径问题1 (Bellman-Ford算法)
/*单源最短路径问题1 (Bellman-Ford算法)样例: 5 7 0 1 3 0 3 7 1 2 4 1 3 2 2 3 5 2 4 6 3 4 4 输出: [0, 3, 7, 5, 9] */ ...
- ACM学习历程—HDU 2112 HDU Today(map && spfa && 优先队列)
Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线 ...
- hdu 2112 HDU Today
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的 ...
- 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 题目意思:又是求最短路的,不过结合埋字符串来考查. 受之前1004 Let the Balloo ...
- 图论(四)------非负权有向图的单源最短路径问题,Dijkstra算法
Dijkstra算法解决了有向图G=(V,E)上带权的单源最短路径问题,但要求所有边的权值非负. Dijkstra算法是贪婪算法的一个很好的例子.设置一顶点集合S,从源点s到集合中的顶点的最终最短路径 ...
- 单源最短路径问题之dijkstra算法
欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. 算法的原理 以源点开始,以源点相连的顶点作为向外延伸的顶点,在所有这些向外延伸的顶 ...
- 图->最短路径->单源最短路径(迪杰斯特拉算法Dijkstra)
文字描述 引言:如下图一个交通系统,从A城到B城,有些旅客可能关心途中中转次数最少的路线,有些旅客更关心的是节省交通费用,而对于司机,里程和速度则是更感兴趣的信息.上面这些问题,都可以转化为求图中,两 ...
随机推荐
- HDU 1203 I NEED A OFFER! 01背包 概率运算预处理。
题目大意:中问题就不说了 ^—^~ 题目思路:从题目来看是很明显的01背包问题,被录取的概率记为v[],申请费用记为w[].但是我们可以预先做个处理,使问题解决起来更方便:v[]数组保留不被录取的概率 ...
- webView.loadUrl("file:///android_asset/table3.html")出现中文乱码的问题
webSettings.setDefaultTextEncodingName("UTF-8");
- libevent总结学习
Memcached用了libevent,但是Redis没有用libevent.Redis的代码还没有libevent的三分之一. libevent有下面几大部分组成: * 事件管理包括各种IO(soc ...
- Size Balanced Tree(SBT) 模板
首先是从二叉搜索树开始,一棵二叉搜索树的定义是: 1.这是一棵二叉树: 2.令x为二叉树中某个结点上表示的值,那么其左子树上所有结点的值都要不大于x,其右子树上所有结点的值都要不小于x. 由二叉搜索树 ...
- extjs 框架模板
的 <script> Ext.onReady(function(){ Ext.create('Ext.container.Viewport', { layout: 'border', it ...
- springMVC和json结合传递数据
1. 新建web project 2. 增加jar 3. 改写web.xml <?xml version="1.0" encoding="UTF-8"?& ...
- 使用myeclipse新建和删除web项目时一定要小心
今天使用myeclipse在非工作空间的路径下新建一个web项目,路径内包含了原有一些web项目,可是我在指定位置时,在那个路径下多写一个子目录的路径,以为myeclipse会 为我默认新建子目录以便 ...
- Android非常实用的开源项目框架
我将文章中所描述的项目都集成在一个apk中,可以直接运行查看效果,2.2以上的机器都可以运行.因为不让直接上传apk文件,我压缩成了zip包 1. Universal-Image-Loader 实现异 ...
- (简单) POJ 3259 Wormholes,SPFA判断负环。
Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes ...
- Spring 工作原理
1.spring原理 内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建.调用对象,Spring就是在运 ...