题目连接

题意:

  没个位置有一个点权,每个边有一个边权,求对于每个点u的min(2*d(u,v)+val[v])(v可以等于u)

分析:

  我们想这样一个问题,从u到v的边权*2再加一个点权就完了,我们能不能把点权也变成边权,可以,直接和0连接就好了,这是从u到0的最短路(当然原先的边权要*2)就是要求的值.

  当然,也可以直接类似dij的贪心思想,把每个点的dis赋值为点权push进去然后更新就行了.其实是类似的算法.

  代码:

  

#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
const int maxn=2e5+;
int vis[maxn];
long long dis[maxn];
struct E{
int to;
int next;
long long val;
}ed[maxn*];
int tot;
int head[maxn];
void J(int a,int b,long long c){
tot++;
ed[tot].to=b;
ed[tot].val=c;
ed[tot].next=head[a];
head[a]=tot;
}
struct Node{
long long dis;
int x;
friend bool operator < (Node a,Node b){
return a.dis>b.dis;
}
Node(int a,long long b){
x=a;
dis=b;
}
};
priority_queue<Node> qu;
int main(){
int n,m;
scanf("%lld%lld",&n,&m);
int js1,js2;
long long js3;
for(int i=;i<=m;i++){
scanf("%lld%lld%lld",&js1,&js2,&js3);
J(js1,js2,2ll*js3);
J(js2,js1,2ll*js3);
}
for(int i=;i<=n;i++){
scanf("%lld",&js3);
J(,i,js3);
}
memset(dis,0x3f,sizeof(dis));
dis[]=0ll;
qu.push(Node(,0ll));
while(!qu.empty()){
Node js=qu.top();
qu.pop();
if(vis[js.x])
continue;
vis[js.x]=;
for(int i=head[js.x];i;i=ed[i].next){
int to=ed[i].to;
long long di=js.dis+ed[i].val;
if(dis[to]>di){
dis[to]=di;
qu.push(Node(to,di));
}
}
}
for(int i=;i<=n;i++)
printf("%lld ",dis[i]);
return ;
}

Buy a Ticket,题解的更多相关文章

  1. CF 938D Buy a Ticket 题解

    题目 Musicians of a popular band "Flayer" have announced that they are going to "make t ...

  2. Codeforces 938 D. Buy a Ticket (dijkstra 求多元最短路)

    题目链接:Buy a Ticket 题意: 给出n个点m条边,每个点每条边都有各自的权值,对于每个点i,求一个任意j,使得2×d[i][j] + a[j]最小. 题解: 这题其实就是要我们求任意两点的 ...

  3. Codeforces 938D Buy a Ticket

    Buy a Ticket 题意要求:求出每个城市看演出的最小费用, 注意的一点就是车票要来回的. 题解:dijkstra 生成优先队列的时候直接将在本地城市看演出的费用放入队列里, 然后直接跑就好了, ...

  4. HDU 1133 Buy the Ticket (数学、大数阶乘)

    Buy the Ticket Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  5. Buy the Ticket{HDU1133}

    Buy the TicketTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...

  6. 【HDU 1133】 Buy the Ticket (卡特兰数)

    Buy the Ticket Problem Description The "Harry Potter and the Goblet of Fire" will be on sh ...

  7. 【高精度练习+卡特兰数】【Uva1133】Buy the Ticket

    Buy the Ticket Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  8. Buy the Ticket(卡特兰数+递推高精度)

    Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...

  9. hdu 1133 Buy the Ticket(Catalan)

    Buy the Ticket Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

随机推荐

  1. 02.vue-router的进阶使用

    关键字:路由懒加载,全局导航守卫,组件导航守卫,redirect重定向,keep-alive,params,query 一.目录结构            二.index.js // 配置路由相关的信 ...

  2. Python大神编程常用4大工具,你用过几个?

    摘要:Python是一种跨平台的编程语言,能够在所有主要的操作系统上,运行你编写的任何Python程序.今天介绍几款常见的工具:Python自带的解释器.文本编辑器(Geany.Sublime Tex ...

  3. 键盘鼠标共享效率工具----Synergy

    在日常工作中,为了提高工作效率以及用户体验,会一个主机接多个显示器,像程序员一般都是使用两块显示器. 然而,有很多人是和我一样,自己有多台电脑,两个笔记本.公司一个台式机,如何在台机器之间来回切换工作 ...

  4. 解决Zabbix 5.0不能选择中文和中文乱码问题

    Zabbix web界面不能选择中文,提示: You are not able to choose some of the languages, because locales for them ar ...

  5. 大数据之Hudi + Kylin的准实时数仓实现

    问题导读:1.数据库.数据仓库如何理解?2.数据湖有什么用途?解决什么问题?3.数据仓库的加载链路如何实现?4.Hudi新一代数据湖项目有什么优势? 在近期的 Apache Kylin × Apach ...

  6. css方法1(清除ul边距间隙,两端对齐,字母大写,首字放大)

    一.清除ul自带左边间距 ul{ margin:; padding:; } 二.ul li 与li  之间隙 1.ul 设置font-size:0 ; 子li 设置字体大小 2.把li写到一起,不换行 ...

  7. cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if

    cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if remove_copy()//在复制过程中删除一些数据remove_copy_if() 删除性算法: ...

  8. Springboot基于assembly的服务化打包

    (1)首先我们编辑 assembly.xml 配置文件,在前文的基础上新增第三方依赖设置(高亮部分),实现将第三方的 jar 包添加到压缩包里的 lib 目录: <?xml version=&q ...

  9. mongodb 数据库 增删改查

    mongodb    数据库      增删改查 增: // 引入express 模块 var express = require('express'); // 路由var router = expr ...

  10. hexo搭建个人博客部署到个人服务器(git+nginx+hexo+next)

    本次以阿里云服务器为例,详细讲解步骤: 一.本地环境[客户端] 这里以本地的win10电脑为例 1.下载node, 默认安装,安装完成之后,node -v看看版本号 node下载 2.安装node(傻 ...