https://www.luogu.org/problem/show?pid=1073

如果他想在i点卖出,那么就要在从1点出发到i点的路径里找个最便宜的买入,用Bellman-Ford求出这样最便宜的买入价记为minp[i]。他能获得的利润就是price[i]-minp[i]。

但是并不是可以在所有的点都可以卖出,因为他最终要走到N,所以只有在和N联通的点才能卖出。用从N点出发倒着的DFS/BFS记录点i是否能到达N点。

故答案为max{price[i]-minp[i] (i点与N点联通)}

#include <iostream>
#include <vector>
#include <queue>
#define maxn 100005
using namespace std;
const int inf = ;
int n, m, price[maxn];
vector<int> g[maxn], gt[maxn]; int minp[maxn];
bool inque[maxn];
queue<int> q;
void bellman_ford()
{
for (int i = ; i <= n; i++)
minp[i] = inf;
minp[] = price[];
q.push();
inque[] = true;
while (!q.empty())
{
int v = q.front();
q.pop();
inque[v] = false;
for (int i = ; i < g[v].size(); i++)
{
int w = g[v][i];
if (minp[w] > min(minp[v], price[w]))
{
minp[w] = min(minp[v], price[w]);
if (!inque[w])
{
inque[w] = true;
q.push(w);
}
}
}
}
} bool avai[maxn];
void dfs(int v)
{
avai[v] = true;
for (int i = ; i < gt[v].size(); i++)
{
int w = gt[v][i];
if (!avai[w])
dfs(w);
}
} int main()
{
ios::sync_with_stdio(false);
cin >> n >> m;
for (int i = ; i <= n; i++)
cin >> price[i];
int u, v, z;
for (int i = ; i <= m; i++)
{
cin >> u >> v >> z;
g[u].push_back(v);
gt[v].push_back(u);
if (z == )
{
g[v].push_back(u);
gt[u].push_back(v);
}
} bellman_ford();
dfs(n);
int ans = ;
for (int i = ; i <= n; i++)
{
if (avai[i])
ans = max(ans, price[i] - minp[i]);
}
cout << ans << endl;
return ;
}

最新文章

  1. HTTPS 和 HTTP
  2. Nginx 日志分享
  3. scala入门教程:scala中的面向对象定义类,构造函数,继承
  4. makefile使用
  5. 2014-07-30 MVC框架中对SQL Server数据库的访问
  6. 03标准对象-01-Date和JSON
  7. Java并发-任务执行
  8. 键盘上的&quot;整蛊专家&quot;,如何防止短信轰炸机
  9. 手游开发之lua的class函数详解
  10. 更改mysql 数据目录
  11. HDU 3032 Nim or not Nim?(Multi-Nim)
  12. delhpi:http超时设置(转载)
  13. Asp.Net+JQuery.Ajax之$.post
  14. (转)创建GitHub技术博客
  15. Java 将图片转成base64,传到前台展示
  16. mono_image_open_from_data_with_name原型
  17. Memcached概念、作用、运行原理、特性、不足简单梳理(1)
  18. 使用GitHub进行项目创建——初级,非指令版,纯软件操作
  19. 题目1004:Median(查找中位数)
  20. 【bzoj2565】最长双回文串 Manacher+树状数组

热门文章

  1. hbase-1.2.5完全分布式部署
  2. Autofac学习之三种生命周期:InstancePerLifetimeScope、SingleInstance、InstancePerDependency
  3. 暑假练习赛 006 A Vanya and Food Processor(模拟)
  4. JavaWeb笔记一、Servlet 详解
  5. Spring知识整理
  6. VMware14.0.0 版本虚拟机安装Ubuntu16.04 LTS版本Linux系统(多图详细步骤)
  7. vue新手入门——谈谈理解
  8. Hibernate级联之一对多和inverse解析
  9. 基于 nodejs 的 webSockt (socket.io)
  10. Spark SQL中的几种join