主要是对字符串的处理,脑袋木了一下

#include <cstdlib>
#include <iostream>
#include<string>
#include<vector>
#include<queue>
using namespace std;struct edge
{int from,to;int cost;
};
const int MAXN=155;
const int MAX=0xfffffff;
bool in_queue[MAXN];
int dist[MAXN];
vector<edge>v[MAXN];
string location[MAXN];
int tag=0;
int locate(string s)
{int i=0;for(i=0;i<=tag-1;i++){if(s==location[i]){return i;}}location[tag]=s;tag++;return tag-1;
}
void spfa(int p)
{queue<int>q;int i=0;int cur;while(!q.empty()){q.pop();}q.push(p);dist[p]=0;in_queue[p]=1;while(!q.empty()){int i=0;int cost,to;cur=q.front();q.pop();for(i=0;i<=int(v[cur].size())-1;i++){cost=v[cur][i].cost+dist[cur];to=v[cur][i].to;if(cost<dist[to]){dist[to]=cost;if(!in_queue[to]){q.push(to);in_queue[to]=1;}}}in_queue[cur]=0;}return;
}
int main(int argc, char *argv[])
{int n;while((cin>>n)&&(n!=-1)){string start,end;int i=0;int idx=0;tag=0;for(i=0;i<=MAXN-1;i++){location[i]="";}memset(in_queue,0,sizeof(in_queue));for(i=0;i<=MAXN-1;i++){dist[i]=MAX;}for(i=0;i<=MAXN-1;i++){v[i].clear();}cin>>start>>end;locate(start);locate(end);for(i=0;i<=n-1;i++){string s1,s2;int cost;int from,to;cin>>s1>>s2>>cost;from=locate(s1);to=locate(s2);edge e={from,to,cost};v[e.from].push_back(e);swap(e.from,e.to);v[e.from].push_back(e);}spfa(locate(start));/*for(int jjj=0;jjj<=MAXN-1;jjj++){cout<<dist[jjj]<<" ";}*/if(dist[locate(end)]<MAX){cout<<dist[locate(end)]<<endl;}else{cout<<-1<<endl;}}//system("PAUSE");return EXIT_SUCCESS;
}

  

转载于:https://www.cnblogs.com/cj695/archive/2012/07/26/2609483.html

hdu2112最短路径相关推荐

  1. 最短路径——Dijkstra算法HDU Today(hdu2112)

    关于本题的floyd解法:http://blog.csdn.net/sm9sun/article/details/53282826 上篇博文介绍了floyd解决最短路径的方法,然而由于floyd极大的 ...

  2. 最短路径——Floyd算法HDU Today(hdu2112)

    最短路径问题是图论研究中的一个经典算法问题, 旨在寻找图(由结点和路径组成的)中两结点之间的最短路径. 算法具体的形式包括: 确定起点的最短路径问题 - 即已知起始结点,求最短路径的问题. 确定终点的 ...

  3. Warshall算法多源点之间最短路径的算法最短距离

    简介:Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似.该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计算机科学系 ...

  4. 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...

    问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...

  5. java找图最短路径_查找有向图最短路径

    老师有一个题: 使用狄克斯屈拉(Dikjstra)标号算法可得出解: 我用Java来实现了一下这个算法: package test; import java.util.ArrayList; impor ...

  6. python迷宫问题求最短路径_用栈求解迷宫问题的所有路径及最短路径程序

    目的:能将栈运用的更为熟练 实验内容:求解迷宫问题程序,要求输出如图所示的迷宫的路径,并求出第一条最短路径的长度以及最短路径. 设计的算法功能: mgpath(int xi,int yi,int xe ...

  7. Python访问街区所有节点最短路径问题,并结合matplotlib可视化

    Python访问街区所有节点最短路径问题,并结合matplotlib可视化 1. 效果图 2. 源码 2.1 5个点全排列(递归+非递归算法) 2.2 python遍历全路径计算距离+matplot可 ...

  8. 数据结构与算法(7-4)最短路径(迪杰斯特拉(Dijkstra)算法、弗洛伊德(Floyd)算法)

    目录 一.最短路径概念 二.迪杰斯特拉(Dijkstra)算法(单源最短路径) 1.原理 2.过程 3.代码 三.弗洛伊德(Floyd)算法(多源最短路径) 1.原理 2.存储 3.遍历 4.代码 参 ...

  9. oauth_client_details的值怎么添加_17.八年级数学:怎么求CDM周长的最小值?最短路径问题,经典考题...

    欢迎您来到方老师数学课堂,请点击上方蓝色字体,关注方老师数学课堂.所有的视频内容,全部免费,请大家放心关注,放心订阅. 八年级数学:怎么求△CDM周长的最小值?最短路径问题,经典考题.大家先在草稿本上 ...

最新文章

  1. Proximal Algorithms 4 Algorithms
  2. 硬件工程师必备秘籍,模拟电子经典200问!
  3. Go gin参数绑定
  4. 使用async,await关键字进行API Access Token的获取
  5. Atlas应用程序调试技巧
  6. FreeSql (三十一)分区分表
  7. html5证书,1+X证书Web前端开发HTML专项练习
  8. python基础语法中处理一组数据所使用的类型有哪些_python基本数据预处理语法函数(2)...
  9. python打开一个软件并进行操作_在Python中运行程序(R)以执行操作(执行脚本)的问题...
  10. 锐龙r54600虚拟linux,锐龙r5 4600u相当于i几 游戏设备问题解决分享!
  11. C语言章节作业第五次,C语言第五次上机作业参考答案
  12. 输入设备名输入输出设备的重定向
  13. VsCode中文乱码问题
  14. Android API下载与使用
  15. matlab仿真光学拍,MATLAB光学干涉实验的仿真研究
  16. 网络数据取证平台行业小调研
  17. 已解决:ORA-00932:数据类型不一致:应为-,但却获得CLOB
  18. java 设置时区_Java Calendar如何设置时区
  19. untiy实现文本滚动
  20. 第一次冲刺--查看活动详情用户场景分析

热门文章

  1. REVerb三元抽取工具
  2. Botanical Dimensions:借助第九代智能英特尔® 酷睿™ 处理器实现独特沉浸式体验...
  3. 关于PCI-E接口你要知道这些点
  4. React组件: 提取图片颜色
  5. Xshell 、PuTTY 复制文件到Linux
  6. 饿了么是视障者非常喜欢的APP,你们要加油哦!
  7. WIN7新功能:跳转列表
  8. mysql-connector-java-5.1.22下载
  9. HDU-1172 猜数字 广搜
  10. Linux中的挂载命令