pat06-图5. 旅游规划(25)
06-图5. 旅游规划(25)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。
输入格式说明:
输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2<=N<=500)是城市的个数,顺便假设城市的编号为0~(N-1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额,中间用空格分开,数字均为整数且不超过500。输入保证解的存在。
输出格式说明:
在一行里输出路径的长度和收费总额,数字间以空格分隔,输出结尾不能有多余空格。
样例输入与输出:
序号 | 输入 | 输出 |
1 |
4 5 0 3 |
3 40 |
2 |
2 1 0 1 |
2 3 |
方法一:邻接矩阵,时间复杂度O(N^2)
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<vector>
#include<cmath>
#include<string>
using namespace std;
#define inf 260000
struct node{
int dist,cost;
};
node Map[][];
int dist[],cost[],n,m,s,d;
int main(){
//freopen("D:\\INPUT.txt","r",stdin);
scanf("%d %d %d %d",&n,&m,&s,&d); //cout<<n<<" "<<m<<" "<<s<<" "<<d<<endl; int i,j,a,b,dis,cos;
for(i=;i<n;i++){//初始化
dist[i]=inf;
cost[i]=inf;
for(j=;j<n;j++){
Map[i][j].dist=Map[j][i].dist=inf;
Map[i][j].cost=Map[j][i].cost=inf;
}
}
for(i=;i<m;i++){
scanf("%d %d %d %d",&a,&b,&dis,&cos);
Map[a][b].cost=Map[b][a].cost=cos;
Map[a][b].dist=Map[b][a].dist=dis; //cout<<a<<" "<<b<<" "<<cos<<" "<<dis<<endl; }
int cur=s,mindist=inf,mincost=inf,minnum;
dist[s]=cost[s]=;
while(cur!=d){ //cout<<dist[cur]<<endl; for(i=;i<n;i++){
if(dist[i]>dist[cur]+Map[cur][i].dist){
dist[i]=dist[cur]+Map[cur][i].dist;
cost[i]=cost[cur]+Map[cur][i].cost;
}
else{
if(dist[i]==dist[cur]+Map[cur][i].dist&&cost[i]>cost[cur]+Map[cur][i].cost){
cost[i]=cost[cur]+Map[cur][i].cost;
}
}
}
dist[cur]=cost[cur]=;//入队
mindist=inf,mincost=inf;
for(i=;i<n;i++){//find min
if(dist[i]){
if(mindist>dist[i]){
mindist=dist[i];
mincost=cost[i];
minnum=i;
}
else{
if(mindist==dist[i]&&mincost>cost[i]){
mincost=cost[i];
minnum=i;
}
}
}
}
cur=minnum;
}
printf("%d %d\n",dist[d],cost[d]);
return ;
}
pat06-图5. 旅游规划(25)的更多相关文章
- 【(图) 旅游规划 (25 分)】【Dijkstra算法】
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> us ...
- PTA 7-10(图) 旅游规划 最短路问题
7-10(图) 旅游规划 (25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果 ...
- PTA 07-图6 旅游规划 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/717 5-9 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路 ...
- PAT 07-图6 旅游规划 (25分)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...
- PTA 旅游规划(25 分)
7-10 旅游规划(25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...
- ACM程序设计选修课——Problem F:(ds:图)旅游规划(优先队列+SPFA)
问题 F: (ds:图)旅游规划 时间限制: 1 Sec 内存限制: 128 MB 提交: 14 解决: 4 题目描述 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路 ...
- 7-9 旅游规划(25 分)(Dijkstra最短路径算法)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...
- 7-36 旅游规划 (25 分(Dijkstra)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...
- 7-9 旅游规划 (25 分)(Dijkstra算法)
题意: 思路:单源最短路问题,Dijkstra算法搞定就可以了,因为要找出最便宜的最短路,所以需要在更新最短距离的时候加一个条件(即当最短距离相等的时候,如果该路径的花费更小,就更新最小花费)就可 ...
随机推荐
- ASP.NET MVC Razor语法及实例
1.混合HTML与Razor脚本 知识点:(1).cshtml怎样引用访问数据, (2).if for 与html嵌套 @using System.Data @using CIIC.TCP.Enti ...
- JavaScript面向切面编程入门
来源极客网学习视频 关键词Javascript AOP编程 例子1: function test() { alert(2); } //理解,所谓的传入一个"回调",该怎样设计bef ...
- go语言的信号及其应用
一.signal包 1.Notify函数 func Notify(c chan<- os.Signal, sig ...os.Signal) 说明:Notify函数让signal包将输入信号转发 ...
- 937. Reorder Log Files
You have an array of logs. Each log is a space delimited string of words. For each log, the first w ...
- vtk-py z-Buffer可见算法
C++版例子: https://lorensen.github.io/VTKExamples/site/Cxx/PolyData/SelectVisiblePoints/ 优点: Simple to ...
- [翻译]CURAND Libaray--Host API--(2)
Translated by xingoo 如果有错误请联系:xinghl90@gmail.com 2.3 返回值 所有的CURAND host端的函数返回值都是curandStatus_t.如果调用没 ...
- jmeter - 录制web网页
1. 打开JMeter工具 创建一个线程组(右键点击“测试计划”--->“添加”---->“线程组”) 创建一个http代理服务器(右键点击“工作台”--->“添加”-- ...
- shared_ptr 和auto_ptr智能指针
shared_ptr:计数的智能指针 它是一个包装了new操作符在堆上分配的动态对象,但它实现的是引用计数型的智能指针 ,可以被自由地拷贝和赋值,在任意的地方共享它,当没有代码使用(引用计数为0)它时 ...
- kuangbin专题七 HDU3974 Assign the task (dfs时间戳建树)
There is a company that has N employees(numbered from 1 to N),every employee in the company has a im ...
- SpringMVC from 表单标签和 input 表单标签
刚学习很懵 不知道还有springmvc 自己的表单 于是乎就上网查了一下 这个真的好用多啦 刚学习很懵 不知道还有springmvc 自己的表单 于是乎就上网查了一下 这个真的好用多啦 ...