HDU2112 HDU Today(最短路径)
来源:互联网 发布:手机电缆报价软件 编辑:程序博客网 时间:2024/05/17 02:24
本题我是用优先队列优化的迪杰斯特拉算法,算作练手题。
思路::基本算法,是dijstra算法,注意此题是无向图,题目中没有说明,起点到终点可能是同一个站,此时输出0,不能到达两地输出 -1 , 起点 –> 终点可能不存在公交车。
点击打开链接
#include <iostream>#include <string.h>#include <queue>#include <algorithm>using namespace std;char name[10009][200],str1[200],str2[200];int cnn,n,line,a,b,map[200][200],dis[200];struct sb{ int first,second; bool operator<(const sb &t)const { if(first!=t.first) return first>t.first; else return second>t.second; }};int find(char *str){ int flag=0,i; for(i=1;i<=cnn;i++) { if(!strcmp(name[i],str)) { flag=1; return i; break; } } if(!flag) { cnn++; strcpy(name[cnn-1],str); return cnn-1; }}priority_queue<sb>q;int main(){ int i; while(cin>>n) { memset(dis,9,sizeof(dis)); memset(map,-1,sizeof(map)); if(n==-1) break; cnn=1; scanf("%s",name[cnn++]); scanf("%s",name[cnn++]); for(i=1;i<=n;i++) { cin>>str1>>str2>>line; a=find(str1); b=find(str2); if(line<map[a][b]||map[a][b]<0) { map[a][b]=line; map[b][a]=line; } } if(!strcmp(name[1],name[2])) { cout<<0<<endl; continue; } dis[1]=0; sb e={dis[1],1}; q.push(e); while(!q.empty()) { e=q.top(); q.pop(); int x=e.second; if(e.first!=dis[x]) continue; for(i=1;i<cnn;i++) { if(map[x][i]>0&&dis[i]>dis[x]+map[x][i]) { dis[i]=dis[x]+map[x][i]; sb e1={dis[i],i}; q.push(e1); } } } if(dis[2]>10000000) { cout<<-1<<endl; continue; } cout<<dis[2]<<endl; } return 0;}
- HDU2112 HDU Today(最短路径)
- 最短路径——Floyd算法HDU Today(hdu2112)
- 最短路径——Dijkstra算法HDU Today(hdu2112)
- HDU Today (最短路径问题)
- HDU Today (最短路径+map)
- hdu2112 HDU Today(最短路)
- hdu 题目2122 HDU Today (最短路径,Dijkstra)
- [最短路径] HDU 2112 - HDU Today
- HDOJ 题目2112 HDU Today(最短路径)
- HDOJ 题目2112 HDU Today(最短路径)
- 杭电2112HDU Today(map 最短路径)
- hdoj--2112 HDU Today(最短路径)
- HDU Today 【最短路径】+【构造map】
- HDU Today Dijkstra 最短路径
- HDU2112 HDU Today(关于最短路和map)
- hdu2112 HDU Today 最短路 水题
- HDU2112~HDU Today Dijkstra算法 最短路
- 【最短路径-Floyd】hdu 2112 HDU Today
- 【网络命令】Ping 详解
- 包安装失败 ! 无法修改密码,启动报错 ubuntu 12.10 下安装 mysql-5.5.28-linux2.6-x86_64 包,最终回到终端在线安装
- 《代码大全》学习笔记(4):建立子程序的步骤
- C#泛型概述
- c语言小试
- HDU2112 HDU Today(最短路径)
- Android的layout_weight属性详解
- 虚拟机上用QT designer 输入不了文字,鼠标正常
- Ping命令和网络端口
- pthread on ubuntu 12.04
- Ping端口方法
- 在程序里判断编译的是debug还是release版本
- 一岁半小朋友的火星电话和滑滑梯
- SAP企业移动平台开发探索系列3 – 苹果手机程序TableView