旅游规划
来源:互联网 发布:金华公务员网络学校 编辑:程序博客网 时间:2024/04/28 23:39
粘题目咯:
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。
输入格式说明:
输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2<=N<=500)是城市的个数,顺便假设城市的编号为0~(N-1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额,中间用空格分开,数字均为整数且不超过500。输入保证解的存在。
输出格式说明:
在一行里输出路径的长度和收费总额,数字间以空格分隔,输出结尾不能有多余空格。
样例输入与输出:
序号输入输出14 5 0 30 1 1 201 3 2 300 3 4 100 2 2 202 3 1 20
3 402
2 1 0 11 0 2 3
2 3
这道题就是一道Dijastra算法题,存储时运用2个二维数组构建成邻接表来分别存储 两城市之间的距离和 需要的费用,注意点的就是 Dijastra算法 不仅需要判断 dist 还需要判断 acost
源码:
#include<iostream>using namespace std;#define MaxNum 10000typedef int ElemType;int main(){int N,M;ElemType S,D;cin>>N>>M>>S>>D;//用邻接矩阵存储图 int **len = new int*[N];//储存公路长度int **cost = new int*[N];//储存费用 for(int i=0; i<N; i++){ len[i] = new int[N]; cost[i] = new int[N]; } //初始化for(int i=0;i<N;i++){for(int j=0;j<N;j++){len[i][j] = MaxNum;cost[i][j] = MaxNum;}} //构建邻接矩阵,处理输入数据for(int i=0;i<M;i++){ElemType c1,c2; int l,c; cin>>c1>>c2>>l>>c; len[c1][c2] = l; len[c2][c1] = l; cost[c1][c2] = c; cost[c2][c1] = c;} //Dijastra算法开始int *dist = new int[N]; //记录当前路径长度int *acost = new int[N]; //记录当前花费//初始化for(int i=0;i<N;i++){dist[i] = MaxNum; acost[i] = MaxNum;} dist[S] = 0;acost[S] = 0; //进行算法 for(int k=0;k<2;k++){ for(int v=0;v<N;v++){for(int w=0;w<N;w++){ if(dist[v] != MaxNum){ if(dist[v]+len[v][w] < dist[w]) dist[w] = dist[v] + len[v][w];else if(dist[v] + len[v][w] == dist[w] && acost[v] != MaxNum && acost[v]+cost[v][w] <acost[w])acost[w] = acost[v] + cost[v][w];}} } } cout<<dist[D] << " " <<acost[D] <<endl;return 0;}
0 0
- 旅游规划
- 旅游规划
- 旅游规划
- PTA--旅游规划--SPFA
- pta-旅游规划
- 5-3 旅游规划
- 5-9 旅游规划
- 旅游规划-Java
- 浙大题--旅游规划
- 旅游预算 动态规划
- vijos1476 旅游规划-动态规划
- VIJOS P1476 旅游规划(csapc)
- 06-图5. 旅游规划
- 07-图6 旅游规划
- 07-图6 旅游规划
- 07-图6 旅游规划
- 07-图6 旅游规划
- PTA-旅游规划(bfs版本)
- UILabel如何使用sizeToFit进行宽高适配
- 为什么Hash函数 H(k) = k % m中 m 尽量不要为2的幂次 也不是要是2^i -1
- 十四、求n的阶层--【递归法和递推法(迭代法)】
- Oracle触发器
- ProgressDialog的使用
- 旅游规划
- Unity3D音频的制作
- C#类型定义变化不会影响反序列化的几种情况
- java 编写的mp3 2
- C# 用Linq实现DataTable实现重复数据过滤
- Oracle存储过程
- SGU-448 Controlled Tournament ( 状态DP )
- 十五、给定一个函数,连接函数内的字符串
- Cordova 环境配置