题目连接

题意:

  没个位置有一个点权,每个边有一个边权,求对于每个点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. Linux帮助命令man详解

    命令man详解 命令man,可以获得命令(使用whatis命令可以得到一个命令的简短介绍,可以使用:命令 --help 来获得命令的选项说明)或配置文件的帮助信息(可以使用apropos命令仅查看配置 ...

  2. iOS-字典转模型(单模型)的实现

    用模型取代字典的好处 使用字典的坏处 一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编译器不会有任何友善提示,需要手敲, eg:dict[@"name&quo ...

  3. 如何解决ubuntu 12.04重启后出现waiting for network configuration和网络标志消失问题

    如何解决ubuntu 12.04重启后出现waiting for network configuration和网络标志消失问题 作为菜鸟的我在学着设置网络后,重启电脑后显示 waiting forne ...

  4. 超强教程!在树莓派上构建多节点K8S集群!

    在很长一段时间里,我对于在树莓派上搭建Kubernetes集群极为感兴趣.在网络上找到一些教程并且跟着实操,我已经能够将Kubernetes安装在树莓派上,并在三个Pi集群中工作.然而,在master ...

  5. Servlet 执行时一般实现哪几个方法?

    public void init(ServletConfig config): public ServletConfig getServletConfig(): public String getSe ...

  6. iostst

    原文链接:https://blog.csdn.net/qq_20332637/article/details/82146753 iostat用于输出CPU和磁盘I/O相关的统计信息,iostat 也有 ...

  7. ESP8266局域网智能家居 路由器下作服务器模式串口透传 无线通信控制 arduino uno示例 模板参考

    准备工作 下载一个Arduino IDE, 下载8266的库文件 ESP8266服务器模式串口透传编译 功能说明 1.直接使用路由器中转数据 2.手机放热点模式直接传输数据 两者有访问IP地址的差别, ...

  8. php配置文件

    mysql的配置文件是 my.iniphp配置文件是 php.iniThinKPHP配置文件 config.phpApche配置文件 httpd-confThinkPHP的运行,开启调试模式配置为 a ...

  9. Linux 开放指定端口号

    1.开启防火墙 [root@localhost opt]# systemctl start firewalld 2.查看当前防火墙状态 [root@localhost opt]# systemctl ...

  10. java map里面进行ASCII 码从小到大排序(字典序)

    public static String getAsciiSort(Map<String, Object> map) { List<Entry<String, Object&g ...