博客
关于我
hdu6201 transaction transaction transaction(新建源汇点,带负权最长路)
阅读量:250 次
发布时间:2019-03-01

本文共 799 字,大约阅读时间需要 2 分钟。

题意:

给定n个点的树,每个点有一个权值a(i),

要求找到两个不同的点S和T,满足a(T)-a(S)-dist(S,T)最大,dist(x,y)是点x和y的树上距离。
输出最大值。

数据范围:n<=1e5

解法:

题目给的是树,很容易往树形dp想,但是树形dp应该很难写,挺坑的.建立源点0,向n个点建立有向边,边权为-a[i],建立汇点n+1,n个点都向它有向边,边权为a[i],令原图的双向边边权取反变为负数,那么点0到点n+1的最短路就是式子的答案.

code:

#include
using namespace std;const int maxm=1e5+5;int head[maxm],nt[maxm<<2],to[maxm<<2],w[maxm<<2],tot;int mark[maxm];int d[maxm];int a[maxm];int n;void add(int x,int y,int z){ tot++;nt[tot]=head[x];head[x]=tot;to[tot]=y;w[tot]=z;}void spfa(int st){ queue
q; q.push(st); for(int i=1;i<=n+1;i++){ d[i]=-1e9; mark[i]=0; } d[st]=0; mark[st]=1; while(!q.empty()){ int x=q.front();q.pop(); mark[x]=0; for(int i=head[x];i!=-1;i=nt[i]){ int v=to[i]; if(d[v]

转载地址:http://wdkv.baihongyu.com/

你可能感兴趣的文章
Nginx 反向代理解决跨域问题
查看>>
Nginx 反向代理配置去除前缀
查看>>
nginx 后端获取真实ip
查看>>
Nginx 多端口配置和访问异常问题的排查与优化
查看>>
Nginx 如何代理转发传递真实 ip 地址?
查看>>
Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
Nginx 学习(一):Nginx 下载和启动
查看>>
nginx 常用指令配置总结
查看>>
Nginx 常用配置清单
查看>>
nginx 常用配置记录
查看>>
nginx 开启ssl模块 [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx
查看>>
Nginx 我们必须知道的那些事
查看>>
Nginx 源码完全注释(11)ngx_spinlock
查看>>
Nginx 的 proxy_pass 使用简介
查看>>
Nginx 的 SSL 模块安装
查看>>
Nginx 的优化思路,并解析网站防盗链
查看>>
Nginx 的配置文件中的 keepalive 介绍
查看>>
Nginx 相关介绍(Nginx是什么?能干嘛?)
查看>>
Nginx 知识点一网打尽:动静分离、压缩、缓存、跨域、高可用、性能优化...
查看>>