Buy a Ticket

题意:有n个点和m条路(都收费),n个点在开演唱会,门票不同,对于生活在n个点的小伙伴,要求计算出每个小伙伴为了看一场演唱会要花费的最小价格;

思路:

这道题我一开始觉得要对每一个点都跑一次最短路,

然而只用把dis【】的每个点初始化成每个地方的门票价格,在放入优先队列中,接着再跑一遍Dijkstra;

对Dijkstra刷新了认识。至于原理:

  (可以想明白,每次在队列中找到最小的门票价格去更新(松弛);

注意路费要计算来回;

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
typedef long long ll;
const int maxn = +; vector<pair<int,ll> >mp[maxn];
priority_queue<pair<ll,int> >q;
ll dis[maxn]; int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
int u,v;
ll c;
scanf("%d%d%I64d",&u,&v,&c); //因为long long 和int ;还有%I64d,wa了多次;
mp[u].push_back(make_pair(v,c*));
mp[v].push_back(make_pair(u,c*));
} for(int i=;i<=n;i++)
{
ll x;
scanf("%I64d",&x);
dis[i]=x;
q.push(make_pair(-dis[i],i));
} while(!q.empty())
{
int now = q.top().second;
ll w = q.top().first;
q.pop(); if(dis[now] != -w)continue; //这一步也比较重要;既然这个点被其他点松弛过,就不能去松弛别点;
for(int t=;t<mp[now].size();t++)
{
int to = mp[now][t].first;
if(dis[to]>dis[now]+mp[now][t].second)
{
dis[to]=dis[now]+mp[now][t].second;
q.push(make_pair(-dis[to],to));
}
}
}
for(int i=;i<=n;i++)
{
printf("%I64d%c",dis[i],i==n?'\n':' ');
} return ;
}

最新文章

  1. 【转载】latch: cache buffers chains
  2. c#常见的错误集合
  3. js通过继承实现私有函数
  4. centos7 gitlab
  5. mysql 线程池 数据库连接池
  6. DJANGO中,用QJUERY的AJAX的json返回中文乱码的解决办法
  7. hbase 0.96 java 示例
  8. cf492C Vanya and Exams
  9. Java web项目综合练习(Estore)
  10. 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )
  11. CI框架简单使用
  12. 采用ftpServer构建嵌入式ftp服务器时设置pass功能
  13. Eclipse同时显示两个编辑窗口
  14. SQLServer中处理亿万级别的数据
  15. 动态获取移动端视宽,从而结合rem达到适配
  16. 洛谷P3721 [AH2017/HNOI2017]单旋(线段树 set spaly)
  17. spring cloud ribbon和feign的区别
  18. sublime+LatexTools引用参考文献
  19. 使用win10自带邮件应用发送文件
  20. php 中 FastCGI与cgi的关系,何为fastcgi

热门文章

  1. CentOS 配置阿里云 NTP 服务
  2. 入门MySQL——架构篇
  3. Linux下zookeeper下载与安装教程
  4. [ PyQt入门教程 ] PyQt5基本控件使用:消息弹出、用户输入、文件对话框
  5. JDK1.8源码分析01之学习建议(可以延伸其他源码学习)
  6. Wpf窗口设置屏幕居中最前显示
  7. asp.net core系列 70 即时通迅-WebSocket+Redis发布订阅
  8. axios配置请求头content-type
  9. vue面试题整理vuejs基础知识整理
  10. IntelliJ IDEA提升效率开发插件必备