题目链接:https://pintia.cn/problem-sets/1101307589335527424/problems/1101314114762387456

题意:给n给城市,m条公路,公路是双向的,起点S,终点D,并给出每条公路连接的两个city的编号以及路费,求S到D的最短距离,若具有最短距离的路线不止一条,求出路费最少的一条。

思路:单源最短路径问题,利用dijkstra算法求出S到其他点的最短路径,只不过加一个路费cost,在dis相等的情况下,取cost最小值。

AC代码:

#include<bits/stdc++.h>
using namespace std; const int inf=0x3f3f3f3f;
int n,m,S,D;
int dis[],cost[],a[][],b[][],vis[]; void dijkstra(){
vis[S]=;
for(int i=;i<n-;++i){
int Min=inf,k;
for(int i=;i<n;++i)
if(!vis[i]&&dis[i]<Min)
Min=dis[i],k=i;
if(Min==inf) break;
vis[k]=;
for(int i=;i<n;++i)
if(!vis[i]&&dis[i]>dis[k]+a[k][i]){
dis[i]=dis[k]+a[k][i];
cost[i]=cost[k]+b[k][i];
}
else if(!vis[i]&&dis[i]==dis[k]+a[k][i]&&cost[i]>cost[k]+b[k][i])
cost[i]=cost[k]+b[k][i];
}
} int main(){
scanf("%d%d%d%d",&n,&m,&S,&D);
for(int i=;i<n;++i)
for(int j=;j<n;++j)
a[i][j]=b[i][j]=inf;
int t1,t2,t3,t4;
while(m--){
scanf("%d%d%d%d",&t1,&t2,&t3,&t4);
a[t1][t2]=a[t2][t1]=t3;
b[t1][t2]=b[t2][t1]=t4;
}
for(int i=;i<n;++i)
dis[i]=a[S][i],cost[i]=b[S][i];
dis[S]=cost[S]=;
dijkstra();
printf("%d %d\n",dis[D],cost[D]);
return ;
}

最新文章

  1. Charles 如何抓取https数据包
  2. Python之路,day10-Python基础
  3. logging模块转载博客
  4. SQLServer学习笔记&lt;&gt;.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数
  5. mac 环境下mysql 不能删除schema问题的解决办法
  6. 在安装twincat plc时,出现 there are some files marked for deletion on next reboot.please reboot first then
  7. [标签] action的使用
  8. tomcat重启或关闭后,上传文件消失 .
  9. java设计模式--行为型模式--策略模式
  10. error=11, Resource temporarily unavailable
  11. asp.net 在新的页面打开的问题。
  12. AKA “Project” Milestone
  13. PTA——字符串逆序
  14. push的时候报错:Permission denied (publickey)
  15. C++11 中的function和bind、lambda用法
  16. Java ee第六周作业
  17. Redhat 6.5安装JDK和Tomcat小记
  18. Python基础学习Day6 is id == 区别,代码块,小数据池 ----&gt;&gt;编码
  19. SIGTERM、SIGKILL、SIGINT和SIGQUIT的区别
  20. Linux运维就业技术指导(九)期末架构考核

热门文章

  1. MongoTemplate的使用
  2. new date() 计算本周周一日期
  3. leetcode153
  4. tensorflow实战系列(三)一个完整的例子
  5. 如何轻松干掉svd(矩阵奇异值分解),用代码说话
  6. 使用STM32CubeMX生成RTC工程[秒中断]
  7. golang 操作redis 错误:failed redigo: unexpected type for String, got type int64
  8. UI5-学习篇-8-本地SAP WEB IDE开发
  9. 多线程中的join总结笔记
  10. 如何启用windows8, windows10中被停用的远程桌面,如何连接windows10远程桌面?