hdu 6201 transaction (最短路变形——带负权最长路)
题意:
给定n个城市的货物买卖价格, 然后给定n-1条道路,每条路有不同的路费, 求出从某两个城市买卖一次的最大利润。
利润 = 卖价 - (买价 + 路费)

样例数据, 最近是从第一个点买入, 第4个点卖出, 利润为8
分析:
1.如果一条边连接(u,v),路费为cost ,城市买卖价格用P( )表示, 那么他的边权就表达为(P(v) - P(u) - cost).
2.我们可以假设有一个起点。他连接着所有的点,边权为0。
3.那么如果从这个点出发的话, 就等于是把所有的城市都尝试作为买入城市
4.然后只要做一次允许有副权的SPFA最短路算法就能算出正确答案了。
#include <cstdio>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
const int maxn = 1e5 + ;
int T,n;
int d[maxn], P[maxn], vis[maxn];
struct Node{
int num;
int dis;
Node(int a = , int b = ):num(a), dis(b){}
};
vector<Node> G[maxn];
int spfa(){
memset(d,-,sizeof(d));//因为要做最长路, 所以把初始值设为-1。
memset(vis,,sizeof(vis));
for(int i = ; i <= n; i++) G[].push_back(Node(i,)); // 虚拟一个起点,练向所有的点。
queue<int> q; d[] = ;
q.push();
vis[] = ;
while(!q.empty()){
int u = q.front();
for(int i = ; i < G[u].size(); i++){
int v = G[u][i].num;
if(d[v] < d[u] + G[u][i].dis){
d[v] = d[u] + G[u][i].dis;
if(!vis[v]){
q.push(v);
vis[v] = ;
}
}
}
q.pop();
vis[u] = ;
}
int ans = -;
for(int i = ; i <= n; i++){
ans = max(ans,d[i]);
}
// puts("");
return ans;
}
void init(int n){
for(int i = ; i <= n; i++ )
G[i].clear();
}
int main(){
scanf("%d", &T);
while(T--){
scanf("%d", &n);
for(int i = ; i <= n; i++){
scanf("%d", &P[i]);
} for(int i = ; i < n - ; i++){
int u , v, cost;
scanf("%d %d %d",&u, &v, &cost);
G[u].push_back(Node(v,P[v] - P[u] - cost));//双向边
G[v].push_back(Node(u,P[u] - P[v] - cost)); }
printf("%d\n",spfa());
init(n);//初始化临接表
}
}
hdu 6201 transaction (最短路变形——带负权最长路)的更多相关文章
- 图之单源Dijkstra算法、带负权值最短路径算法
1.图类基本组成 存储在邻接表中的基本项 /** * Represents an edge in the graph * */ class Edge implements Comparable< ...
- Expm 10_1 带负权值边的有向图中的最短路径问题
[问题描述] 对于一个带负权值边的有向图,实现Bellman-Ford算法,求出从指定顶点s到其余顶点的最短路径,并判断图中是否存在负环. package org.xiu68.exp.exp10; p ...
- HDU 6201 transaction transaction transaction(拆点最长路)
transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 132768/1 ...
- hdu 6201 transaction transaction transaction
https://vjudge.net/contest/184514#problem/H 题意: 一个商人为了赚钱,在城市之间倒卖商品.有n个城市,每个城市之间有且只有一条无向边连通.给出n个城市的货物 ...
- SPFA 最短路 带负权边的---- 粗了解
SPFA(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算. 算法大致流程是用一个队列来进行维护. 初始时将源加入队列 ...
- Wormholes 最短路判断有无负权值
Description While exploring his many farms, Farmer John has discovered a number of amazing wormholes ...
- poj 3259 bellman最短路推断有无负权回路
Wormholes Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 36717 Accepted: 13438 Descr ...
- HDU 6201 transaction transaction transaction(树形DP)
transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 132768/1 ...
- HDU - 6201 transaction transaction transaction(树形dp取两点)
transaction transaction transaction Kelukin is a businessman. Every day, he travels around cities to ...
随机推荐
- mybaits 连接数据库汉字保存乱码??
查看数据库连接地址: jdbc.url=jdbc:mysql://localhost:3306/az?useUnicode=true&characterEncoding=utf-8 多了一个a ...
- win和mac系统Sublime Text 3配置编译c和c++
widows安装 安装MinGW MinGW是Minimalist GNU on Windows的首字母缩写,安装后就可以使用很多的GNU工具.GNU(GNU’s Not Unix)是linux中的一 ...
- Magic Numbers CodeForces - 628D
Magic Numbers CodeForces - 628D dp函数中:pos表示当前处理到从前向后的第i位(从1开始编号),remain表示处理到当前位为止共产生了除以m的余数remain. 不 ...
- 线段树(区间合并) HDOJ 3308 LCIS
题目传送门 题意:线段树操作:1. 单点更新 2. 求区间的LCIS(longest consecutive increasing subsequence) 分析:注意是连续的子序列,就是简单的区间合 ...
- Android逆向分析工具表
逆向分析工具表 工具 描述 网址 androidterm Android Terminal Emulator http://code.google.com/p/androidterm/ droidbo ...
- 132 Palindrome Partitioning II 分割回文串 II
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串.返回 s 符合要求的的最少分割次数.例如,给出 s = "aab",返回 1 因为进行一次分割可以将字符串 s 分 ...
- RedHat改yum源免费使用CentOS源
linux默认是安装了yum软件的,但是由于激活认证的原因让redhat无法直接进行yum安装一些软件 如果我们需要在redhat下直接yum安装软件,我们只用把yum的源修改成CentOS的就好了, ...
- PHP的扩展知识
1. 图片的上传大小受哪一些限制? 答:浏览器 其实php.ini文件里面 1. upload_max_filesize = 2M 限制单个文件上传大小 2. post_max_size = 8M ...
- android开发学习 ------- git - 将代码回滚到任意版本
不小心将一个东西错误提交到git - 远程仓库上 参考 https://www.cnblogs.com/wancy86/p/5848024.html 你的git可能关联了多个远程仓库,每个关联的代码 ...
- PKU_campus_2018_H Safe Upper Bound
思路: 题目链接http://poj.openjudge.cn/practice/C18H/ 用2147483647除以最大素因子. 这里用了Pollard_rho因子分解算法,模板参考了http:/ ...