有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。

输入格式:

输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额,中间用空格分开,数字均为整数且不超过500。输入保证解的存在。

输出格式:

在一行里输出路径的长度和收费总额,数字间以空格分隔,输出结尾不能有多余空格。

输入样例:

4 5 0 3
0 1 1 20
1 3 2 30
0 3 4 10
0 2 2 20
2 3 1 20

输出样例:

3 40

题意

求从s点出发到d点的最短路并且最小花费

题解

单源最短路,考虑Dijstra(优化)和SPFA,这里选用SPFA

求最短路不用说

求最小花费,如果到某点的长度相等,更新花费就行了

代码

 #include<bits/stdc++.h>
using namespace std; const int N=,M=N*N,INF=0x3f3f3f3f;
int Vis[N],Dist[N],C[N];
int Cost[N][N],G[N][N];
int n,m,s,d;
void spfa()
{
memset(Dist,INF,sizeof(Dist));
queue<int> Q;
Q.push(s);
Dist[s]=;
while(!Q.empty())
{
int u=Q.front();Q.pop();
Vis[u]=;
for(int v=;v<=n;v++)
{
if(u!=v&&G[u][v]!=1e9)
{
if(Dist[v]>Dist[u]+G[u][v])//最短路
{
Dist[v]=Dist[u]+G[u][v];
C[v]=C[u]+Cost[u][v];//如果更新了最短路,花费直接更新
if(!Vis[v])
{
Q.push(v);
Vis[v]=;
}
}
else if(Dist[v]==Dist[u]+G[u][v])//最短路相同
{
if(C[v]>C[u]+Cost[u][v])//最小花费
{
C[v]=C[u]+Cost[u][v];
if(!Vis[v])
{
Q.push(v);
Vis[v]=;
}
}
}
}
}
}
printf("%d %d\n",Dist[d],C[d]);
}
int main()
{
int u,v,w,t;
scanf("%d%d%d%d",&n,&m,&s,&d);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(i==j)G[i][j]=Cost[i][j]=;
else G[i][j]=Cost[i][j]=1e9;
for(int i=;i<m;i++)
{
scanf("%d%d%d%d",&u,&v,&w,&t);
Cost[v][u]=Cost[u][v]=t;
G[v][u]=G[u][v]=w;
}
spfa();
return ;
}

PTA 7-9 旅游规划(SPFA)的更多相关文章

  1. PTA 07-图6 旅游规划 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/717 5-9 旅游规划   (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路 ...

  2. PTA 旅游规划(25 分)

    7-10 旅游规划(25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...

  3. PTA 7-10(图) 旅游规划 最短路问题

    7-10(图) 旅游规划 (25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果 ...

  4. ACM程序设计选修课——Problem F:(ds:图)旅游规划(优先队列+SPFA)

    问题 F: (ds:图)旅游规划 时间限制: 1 Sec  内存限制: 128 MB 提交: 14  解决: 4 题目描述 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路 ...

  5. 2018.09.09 poj2949Word Rings(01分数规划+spfa判环)

    传送门 这题要先巧妙的转化一下. 对于每个字符串,我们把头尾的两个小字符串对应的点连边,边权是这个字符串的长度. 这样最多会出现26*26个点. 这个时候就只用求出边权和跟边数的最大比值了. 这个显然 ...

  6. Bzoj1486/洛谷P3199 最小圈(0/1分数规划+spfa)/(动态规划+结论)

    题面 Bzoj 洛谷 题解(0/1分数规划+spfa) 考虑\(0/1\)分数规划,设当前枚举到的答案为\(ans\) 则我们要使(其中\(\forall b_i=1\)) \[ \frac{\sum ...

  7. POJ 3621 Sightseeing Cows 【01分数规划+spfa判正环】

    题目链接:http://poj.org/problem?id=3621 Sightseeing Cows Time Limit: 1000MS   Memory Limit: 65536K Total ...

  8. pat06-图5. 旅游规划(25)

    06-图5. 旅游规划(25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该 ...

  9. 【bzoj4898】[Apio2017]商旅 Floyd+分数规划+Spfa

    题目描述 有n个点.m条边.和k种商品.第$i$个点可以以$B_{ij}$的价格买入商品$j$,并以$S_{ij}$的价格卖出.任何时候只能持有一个商品.求一个环,使得初始不携带商品时以某种交易方式走 ...

随机推荐

  1. Tomcat 配置Https

    https://www.cnblogs.com/wanghaoyuhappy/p/5267702.html JDK1.8 keytool 生存证书 C:\keys\tomcat.keystore 1: ...

  2. Directshow 采集与FFDshow 冲突

    在使用Directshow 进行视频采集的时候,发现与本地安装的一个ffdshow有冲突. 见下图: 经过测试发现dshow 在设置采集媒体类型的时候,如果设置RGB32就会崩溃,如果设置RGB24就 ...

  3. Oracle部署安装

    1.用户有数据库服务器则不需要安装Oracle服务器端,若没有需要安装 https://jingyan.baidu.com/article/363872eccfb9266e4aa16f5d.html ...

  4. css样式表2

    <head> <style type="text/css"> .main { height:42px; width:100%; text-align:cen ...

  5. TWebBrowser禁止弹出Alert对话框

    以前介绍过通过编写Webbrowser1的OnDocumentComplete事件响应代码可以拦截网页弹出的Alert等对话框,代码如下: procedure TForm1.WebBrowser1Do ...

  6. Homebrew安装与使用

    Homebrew是什么? 官方解释: Homebrew是以最简单,最灵活的方式来安装苹果公司在MacOS中不包含的UNIX工具. 官网:传送门 Git仓库地址:传送门 Homebrew 怎么安装 ?怎 ...

  7. Innodb独立的undo tablespace

    [MySQL5.6] Innodb独立的undo tablespace   在MySQL5.6中开始支持把undo log分离到独立的表空间,并放到单独的文件目录下:这给我们部署不同IO类型的文件位置 ...

  8. 2008-03-18 22:58 oracle基础知识小结

    oracle 数据类型: 字段类型                 中文说明                                                  限制条件         ...

  9. 那些年,我们追过的PHP自加自减运算(2)

    ----------------------------------------------------------------------------------------- 先来一段例子,来引出 ...

  10. 28.注解2.md

    目录 1. 特点 2.优点 3. 源注解-部分 4.自定义注解 5.使用注解获 1. 特点 注释:给程序员阅读使用 注解:给编译器阅读使用 2.优点 简化配置文件 灵活方便 3. 源注解-部分 //修 ...